diff --git a/D-Limiter_ip_master/authorship.json b/D-Limiter_ip_master/authorship.json index c0f850a5..a6ace769 100644 --- a/D-Limiter_ip_master/authorship.json +++ b/D-Limiter_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"# Alcazar project template","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"This is Alcazar, your own personalised Chatbot ready to do your bidding.","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"## Given functionalities","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"### `todo` ","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"* Add a task that needs to be done without a deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `todo something todo`","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"* For example `todo return a book` to add the task to your task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"### `deadline`","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"* Add a task to be completed by a given date.","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `deadline topic of deadline /by yyyy-mm-dd`","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"* For example `deadline submit homework /by 2023-12-01`","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"### `event`","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":"* Add a task that is going to occur in a specific duration","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `event some event /from start time /to end time`","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"* For example `event go for a move /from Wed 2pm /to Wed 4pm`","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":"### `mark`","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"* Mark a task as done","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `mark task number`","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":"* For example `mark 3` will mark the third task done","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"### `unmark`","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":"* Mark a task as not done","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `unmark task number`","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":"* For example `unmark 3` will mark the third task not done","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"### `delete`","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":"* Delete a task","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `delete task number`","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"* For example `delete 3` will delete the third task","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":"### `list`","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":"* List all the tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"* Can be used by the input `list`","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" ","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":"### `find`","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":"* Used to find all the tasks containing a keyword","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":"* Can be used by `find keyword`","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"* For example `find books` will result in showing all the tasks containing the word books","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":"### `data source`","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":"* Change the data source of the tasks list storage file","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":"* Can be used by `data source new file path`","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":"* For example `data source ./src/main/java/data/tasks.txt` will change the data source to `./src/main/java/data/tasks.txt`","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":"### `bye`","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":"* Close Alcazar","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"* Can be used by entering `bye`","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":53}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"checkstyle {","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" mainClass.set(\"alcazar.Main\")","lastModifiedDate":"2023-09-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" archiveBaseName \u003d \"alcazar\"","lastModifiedDate":"2023-09-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"D-Limiter":19,"-":40}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" private String by;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" private String d1;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" int i \u003d 0;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" this.by \u003d by.trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" String date \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" for (i \u003d 0; i \u003c by.length(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" if (by.charAt(i) \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" date +\u003d by.charAt(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" DateTimeFormatter df \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" LocalDate d \u003d LocalDate.parse(date);","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" d1 \u003d d.format(df);","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * Used to evaluate String form of a Deadlien","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a Deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" String s \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" by \u003d by.trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" s \u003d \"[D]\" + super.toString() + \" (by: \" + d1 + \" \" + by.substring(i) + \")\";","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" return s;","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":42}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" * Used to evaluate String form of a Event","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * @return String form of an Eventgit","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to.trim() + \")\";","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":20}},{"path":"src/main/java/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class InvalidArgumentException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" InvalidArgumentException(String msg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" super(msg);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":5}},{"path":"src/main/java/InvalidSerialException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class InvalidSerialException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" InvalidSerialException(String msg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" super(msg);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":5}},{"path":"src/main/java/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class InvalidTaskException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" InvalidTaskException(String msg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" super(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":5}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" public void parse(String prompt, TaskList tasks, Ui ui, Storage storage) throws InvalidArgumentException, InvalidTaskException, InvalidSerialException {","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" if (prompt.equals(\"list\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Here are the tasks in your list:\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" + tasks.getTasks());","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"mark\") || prompt.contains(\"unmark\") ||","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" prompt.contains(\"delete\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" int index \u003d Integer.parseInt(prompt.charAt(prompt.length() - 1) + \"\");","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" if(index \u003e tasks.size()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" \"an incorrect serial number greater than \" + (tasks.size() - 1));","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" if (prompt.contains(\"unmark\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" tasks.unmarkElement(index - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" System.out.println(","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" \"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" tasks.elementAt(index - 1) + \"\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"delete\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" System.out.print(","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" \"Noted. I\u0027ve removed this task:\\n\" + \" \" +","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" tasks.elementAt(index - 1) + \"\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" tasks.delete(index - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list\\n\" );","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" tasks.markElement(index - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" System.out.println(","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" \"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" tasks.elementAt(index - 1) + \"\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" if (prompt.contains(\"deadline\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" String deadLine[] \u003d this.extractDeadline(this.textAfter(prompt));","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" System.out.println(deadLine[0] + \" ,, \" + deadLine[1] );","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new Deadline(deadLine[0], deadLine[1]));","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"LOLOLOL\\n\"+tasks.elementAt(tasks.size()-1));","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"event\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" String eventData[] \u003d this.extractEvent(this.textAfter(prompt));","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new Event(eventData[2], eventData[0], eventData[1]));","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"todo\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new ToDo(this.textAfter(prompt)));","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidTaskException(","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\"","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(tasks.size() - 1) + \"\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":"// prompt \u003d chatBot.inputText();","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit(String prompt) {","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" return prompt.contains(\"bye\");","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" * Method to extract the content of the command","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" * @param sent The String that contains the command content after","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":" * the specified command.","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException if there is not content in the command","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"D-Limiter"},"content":" * @return Sentinel object of type R.","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"D-Limiter"},"content":" public String textAfter(String sent) throws InvalidArgumentException {","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"D-Limiter"},"content":" String reText \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"D-Limiter"},"content":" String command \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"D-Limiter"},"content":" boolean flag \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 0; i \u003c sent.length(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"D-Limiter"},"content":" char ch \u003d sent.charAt(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"D-Limiter"},"content":" if (flag) {","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"D-Limiter"},"content":" reText +\u003d ch;","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"D-Limiter"},"content":" } else if (ch \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"D-Limiter"},"content":" command +\u003d ch;","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"D-Limiter"},"content":" flag \u003d true;","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"D-Limiter"},"content":" if(reText \u003d\u003d \"\") {","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(\"☹ OOPS!!! The description of a \"","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"D-Limiter"},"content":" + command + \" cannot be empty.\");","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"D-Limiter"},"content":" return reText;","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"D-Limiter"},"content":" * Extracts the end timing of the deadline.","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"D-Limiter"},"content":" * @param text The input prompt","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"D-Limiter"},"content":" * @return An array containing the command content and end timing of","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"D-Limiter"},"content":" * the Deadline.","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"D-Limiter"},"content":" public String[] extractDeadline(String text) {","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"D-Limiter"},"content":" String wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"D-Limiter"},"content":" String str \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"D-Limiter"},"content":" int i;","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"D-Limiter"},"content":" for (i \u003d 0; i \u003c text.length(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":113,"author":{"gitId":"D-Limiter"},"content":" char ch \u003d text.charAt(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":114,"author":{"gitId":"D-Limiter"},"content":" if (ch \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":115,"author":{"gitId":"D-Limiter"},"content":" if (wrd.equals(\"/by\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":116,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":117,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"D-Limiter"},"content":" str +\u003d wrd + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"D-Limiter"},"content":" wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":120,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"D-Limiter"},"content":" wrd +\u003d ch;","lastModifiedDate":"2023-09-02"},{"lineNumber":122,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":123,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":124,"author":{"gitId":"D-Limiter"},"content":" String deadArray[] \u003d new String[2];","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"D-Limiter"},"content":" deadArray[0] \u003d str.trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":126,"author":{"gitId":"D-Limiter"},"content":" deadArray[1] \u003d text.substring(i + 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":127,"author":{"gitId":"D-Limiter"},"content":" return deadArray;","lastModifiedDate":"2023-09-02"},{"lineNumber":128,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":129,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":131,"author":{"gitId":"D-Limiter"},"content":" * Method to extract the start and end timings of a deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"D-Limiter"},"content":" * @param text The input text","lastModifiedDate":"2023-09-02"},{"lineNumber":133,"author":{"gitId":"D-Limiter"},"content":" * @return Returns and array containing the command content,","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"D-Limiter"},"content":" * the start and the end times","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"D-Limiter"},"content":" public String[] extractEvent(String text) {","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"D-Limiter"},"content":" String str[] \u003d new String[3];","lastModifiedDate":"2023-09-02"},{"lineNumber":138,"author":{"gitId":"D-Limiter"},"content":" str[0] \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"D-Limiter"},"content":" str[1] \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":140,"author":{"gitId":"D-Limiter"},"content":" str[2] \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":141,"author":{"gitId":"D-Limiter"},"content":" String wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":142,"author":{"gitId":"D-Limiter"},"content":" text \u003d text + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":143,"author":{"gitId":"D-Limiter"},"content":" boolean fromFlag \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":144,"author":{"gitId":"D-Limiter"},"content":" boolean toFlag \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":145,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 0; i \u003c text.length(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":146,"author":{"gitId":"D-Limiter"},"content":" char ch \u003d text.charAt(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":147,"author":{"gitId":"D-Limiter"},"content":" if (ch \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":148,"author":{"gitId":"D-Limiter"},"content":" if (wrd.equals(\"/from\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":149,"author":{"gitId":"D-Limiter"},"content":" fromFlag \u003d true;","lastModifiedDate":"2023-09-02"},{"lineNumber":150,"author":{"gitId":"D-Limiter"},"content":" } else if (wrd.equals(\"/to\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":151,"author":{"gitId":"D-Limiter"},"content":" toFlag \u003d true;","lastModifiedDate":"2023-09-02"},{"lineNumber":152,"author":{"gitId":"D-Limiter"},"content":" fromFlag \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":153,"author":{"gitId":"D-Limiter"},"content":" } else if (fromFlag) {","lastModifiedDate":"2023-09-02"},{"lineNumber":154,"author":{"gitId":"D-Limiter"},"content":" str[0] +\u003d wrd + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":155,"author":{"gitId":"D-Limiter"},"content":" } else if (toFlag) {","lastModifiedDate":"2023-09-02"},{"lineNumber":156,"author":{"gitId":"D-Limiter"},"content":" str[1] +\u003d wrd + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":157,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":158,"author":{"gitId":"D-Limiter"},"content":" str[2] +\u003d wrd + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":159,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":160,"author":{"gitId":"D-Limiter"},"content":" wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":161,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":162,"author":{"gitId":"D-Limiter"},"content":" wrd +\u003d ch;","lastModifiedDate":"2023-09-02"},{"lineNumber":163,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":164,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":165,"author":{"gitId":"D-Limiter"},"content":" str[2] \u003d str[2].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":166,"author":{"gitId":"D-Limiter"},"content":" return str;","lastModifiedDate":"2023-09-02"},{"lineNumber":167,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":168,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":169,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":169}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"import java.io.File;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" private String filePath;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" Storage(String filePath) {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" this.filePath \u003dfilePath;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" printTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Error loading file\");","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" * Prints the contents of the file stored at filePath","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" * @throws FileNotFoundException It is thrown in a situation where the file","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" * does not exist at the given filePath","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" public void printTasks() throws FileNotFoundException {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" * Writes any changes in the tasks to the hard disk","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" * @param filePath Stores the address to the file with the stored tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" * @param tasks The ArrayList containing all the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" public void writeUp(TaskList t) {","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" fw.write(t.getTasks());","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" fw.close();","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" this.printTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"An exception occurred: \" + e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent ToDo Task","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" * @param text String to be converted to a ToDo task","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" * @return The ToDo task converted from text","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" public ToDo taskToDo(String text) {","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" ToDo t \u003d new ToDo(text.substring(10).trim());","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" if (text.charAt(7) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" t.markTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" return t;","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent Event Task","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" * @param text String to be converted to Event Task","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" * @return The Event task converted from text","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" public Event taskEvent(String text) {","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" boolean isMarked \u003d text.charAt(7) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" String[] parts \u003d text.split(\"[()]\");","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" String taskDescription \u003d parts[0].trim().substring(10);","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":" String timeInfo \u003d parts[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" String[] timeParts \u003d timeInfo.split(\"from:|to:\");","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" String startTime \u003d timeParts[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" String endTime \u003d timeParts[2].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":" String[] extractedValues \u003d { taskDescription, startTime, endTime };","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" Event e \u003d new Event(extractedValues[0], extractedValues[1], extractedValues[2]);","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" if (isMarked) {","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" e.markTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"D-Limiter"},"content":" return e;","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent Deadline Task","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"D-Limiter"},"content":" * @param text The String to be converted to a Deadline Task","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"D-Limiter"},"content":" * @return The Deadline Task from the converted String","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"D-Limiter"},"content":" public Deadline taskDeadline(String text) {","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"D-Limiter"},"content":" boolean isMarked \u003d text.charAt(7) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"D-Limiter"},"content":" text \u003d text.substring(10);","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"D-Limiter"},"content":" String wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"D-Limiter"},"content":" String str \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"D-Limiter"},"content":" int i;","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"D-Limiter"},"content":" for (i \u003d 0; i \u003c text.length(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"D-Limiter"},"content":" char ch \u003d text.charAt(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"D-Limiter"},"content":" if (ch \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"D-Limiter"},"content":" if (wrd.equals(\"(by:\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"D-Limiter"},"content":" str +\u003d wrd + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"D-Limiter"},"content":" wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"D-Limiter"},"content":" wrd +\u003d ch;","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"D-Limiter"},"content":" String deadArray[] \u003d new String[2];","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"D-Limiter"},"content":" deadArray[0] \u003d str.trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"D-Limiter"},"content":" deadArray[1] \u003d text.substring(i + 1, text.length() - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"D-Limiter"},"content":" Deadline d \u003d new Deadline(deadArray[0], deadArray[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"D-Limiter"},"content":" if (isMarked) {","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"D-Limiter"},"content":" d.markTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"D-Limiter"},"content":" return d;","lastModifiedDate":"2023-09-02"},{"lineNumber":113,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":114,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":115,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":116,"author":{"gitId":"D-Limiter"},"content":" * This method reads a file and converts its text into an ArrayList of Task objects","lastModifiedDate":"2023-09-02"},{"lineNumber":117,"author":{"gitId":"D-Limiter"},"content":" * @param filePath The path to the destination where the Tasks are stored","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"D-Limiter"},"content":" * @return ArrayList of Tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":120,"author":{"gitId":"D-Limiter"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"D-Limiter"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":122,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":123,"author":{"gitId":"D-Limiter"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":124,"author":{"gitId":"D-Limiter"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"D-Limiter"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":126,"author":{"gitId":"D-Limiter"},"content":" String prompt \u003d s.nextLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":127,"author":{"gitId":"D-Limiter"},"content":" char ch \u003d prompt.charAt(4);","lastModifiedDate":"2023-09-02"},{"lineNumber":128,"author":{"gitId":"D-Limiter"},"content":" if (ch \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":129,"author":{"gitId":"D-Limiter"},"content":" tasks.add(taskToDo(prompt));","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"D-Limiter"},"content":" } else if (ch \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":131,"author":{"gitId":"D-Limiter"},"content":" tasks.add(taskEvent(prompt));","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":133,"author":{"gitId":"D-Limiter"},"content":" tasks.add(taskDeadline(prompt));","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"D-Limiter"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Error! Could not find file!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":138,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"D-Limiter"},"content":" return tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":140,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":141,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":141}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" private boolean isMarked;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" private String taskPrompt;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" Task(String taskPrompt) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" this.taskPrompt \u003d taskPrompt;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" * Used to mark this task done.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" public void markTask() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Used to mark this task undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" * Used to evaluate String form of a Task","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a Task","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" String marked \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" if(this.isMarked) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" marked \u003d \"X\";","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" marked \u003d \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" return \"[\" + marked + \"] \" + this.taskPrompt;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":36}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" public int size() {","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" public void markElement(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" this.tasks.get(index).markTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" public void unmarkElement(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" this.tasks.get(index).unmarkTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" public Task elementAt(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" public void delete(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" public void add(Task t) {","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" this.tasks.add(t);","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" * The method evaluates the list of the passed tasks.","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" * @param tasks The ArrayList containing all the passed commands","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" * @return String of all the passed tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" public String getTasks() {","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" String listedTasks \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" for(int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" listedTasks +\u003d (i + 1) + \". \" + tasks.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" return listedTasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":44}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Used to evaluate String form of a ToDo task","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a ToDo Task","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":16}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"public class Ui {","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" String line \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" System.out.println(line + \" Hello! I\u0027m Alcazar\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" line);","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" String st \u003d sc.nextLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" return st;","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" public void showLine() {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" public void showError(String msg) {","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" System.out.println(msg);","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Error loading data from the file\");","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" public void showExitMsg() {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" this.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" System.out.println(","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" this.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":31}},{"path":"src/main/java/alcazar/Alcazar.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.commands.Command;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.AlcazarException;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the main method where all the functionality begins.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"public class Alcazar {","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" /** The storage for all the input tasks */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" private Storage storage;","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /** The list of all the passed tasks */","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Constructs new Alcazar object","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" public Alcazar() {","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" String filePath \u003d \"./src/main/java/data/tasks.txt\";","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * Changes the data source file path to the passed location.","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * @param filePath File path to the new data source location","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" public void reInitialiseStorage(String filePath) {","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" * Generates response for the given user input.","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" * @param input The passed user input","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" public Response getResponse(String input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" Response inputResponse;","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" Command command \u003d Parser.parse(input);","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" inputResponse \u003d command.execute(tasks, storage);","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" } catch (AlcazarException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" boolean isUserExiting \u003d false;","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" return new Response(e.getMessage(), isUserExiting);","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" if (inputResponse.isFileChange()) {","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" this.reInitialiseStorage(inputResponse.getFilePath());","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" return inputResponse;","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":54}},{"path":"src/main/java/alcazar/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * A GUI for Alcazar using FXML.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" private Alcazar alcazar \u003d new Alcazar();","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" assert fxmlLoader !\u003d null : \"FXML source not found\";","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setAlcazar(alcazar);","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" stage.show();","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-10"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":36}},{"path":"src/main/java/alcazar/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"import alcazar.ui.DialogBox;","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" private static boolean isExit;","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" private Alcazar alcazar;","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/master.png\"));","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" private Image alcazarImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/Alcazar.png\"));","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" public void initialize() {","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" MainWindow.isExit \u003d false;","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(","lastModifiedDate":"2023-09-10"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" \"Greetings my master! I\u0027m Alcazar\\n\" + \" What can I do for you?\", alcazarImage));","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" public void setAlcazar(Alcazar a) {","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" alcazar \u003d a;","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-10"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-10"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-10"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" if (MainWindow.isExit) {","lastModifiedDate":"2023-09-10"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" System.exit(0);","lastModifiedDate":"2023-09-10"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-10"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" Response response \u003d alcazar.getResponse(input);","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-10"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-10"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" DialogBox.getDukeDialog(response.getResult(), alcazarImage)","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-10"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" if (response.isUserExiting()) {","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" MainWindow.isExit \u003d true;","lastModifiedDate":"2023-09-10"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" userInput.clear();","lastModifiedDate":"2023-09-10"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":64}},{"path":"src/main/java/alcazar/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.commands.*;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.AlcazarException;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidSerialException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidTaskException;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates functionality to parse the input commands","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Interprets the command input.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param prompt The input text","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * @return The Command representing the input prompt","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException In the situation when an InvalidArgument is passed","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidTaskException In the situation when an unrecognized task was passed","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidSerialException In the situation where an invalid serial number is passed","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" public static Command parse(String prompt) throws AlcazarException {","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" if (prompt.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"bye\")) {","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"find\")) {","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" return new FindCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"unmark\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" return new UnmarkCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"mark\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" return new MarkCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"delete\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" return new DeleteCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"deadline\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" return new AddDeadlineCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"event\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" return new AddEventCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"todo\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" return new AddToDoCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"data source\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" return new ChangeDataSource(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidTaskException(","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\"","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":52}},{"path":"src/main/java/alcazar/Response.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a commands response","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class Response {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" /** Response generated from a command*/","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" private String result;","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" /** Boolean to checker whether the command is exit*/","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" private boolean isExit;","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" /** The new data source location */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" private String changedFilePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" /** Boolean to check whether the calling command is ChangeDataSource */","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" private boolean isFileChanging;","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new Response","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * @param result the result of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param isExit whether the command is exit","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public Response(String result, boolean isExit) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.result \u003d result;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" this.isExit \u003d isExit;","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" this.isFileChanging \u003d false;","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" this.changedFilePath \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * Evaluates and returns the result in this Response","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * @return The result in this Response","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" public String getResult() {","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" return this.result;","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" * Evaluates whether this Response was generated from an Exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" * @return Boolean represent whether this Response is by an Exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" public boolean isUserExiting() {","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" return isExit;","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" * Evaluates whether this response was generated by ChangeFileCommand","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" * @return Boolean to check whether this Response was created by a ChangeFileCommand","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" public boolean isFileChange() {","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" return this.isFileChanging;","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" * Changes the changedFilePath to the passed filePath","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" * @param filePath The file path to change the data Source to.","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" public void setFilePath(String filePath) {","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" this.changedFilePath \u003d filePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" this.isFileChanging \u003d true;","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" * Evaluates and returns the changed file path for the data source.","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" * @return The file path to the new data source","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" public String getFilePath() {","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" return this.changedFilePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":70}},{"path":"src/main/java/alcazar/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.io.File;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Deadline;","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Event;","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Task;","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.ToDo;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates file storage related functionality","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" /** The path to the file where all the input tasks are stored */","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" private String filePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" Storage(String filePath) {","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" printTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Error loading file\");","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" * Prints the contents of the file stored at filePath","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" * @throws FileNotFoundException It is thrown in a situation where the file","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" * does not exist at the given filePath","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" public void printTasks() throws FileNotFoundException {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" * Writes the new tasks to file","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" * @param taskList Stores the tasks in a TaskList object","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" public void writeUp(TaskList taskList) {","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" fw.write(taskList.getTasks());","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" fw.close();","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" this.printTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"An exception occurred: \" + e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent ToDo Task","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" * @param text String to be converted to a ToDo task","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" * @return The ToDo task converted from text","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" public ToDo writeTaskToDo(String text) {","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" ToDo taskToDo \u003d new ToDo(text.substring(10).trim());","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" if (text.charAt(7) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" taskToDo.markTask();","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" return taskToDo;","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent Event Task","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" * @param text String to be converted to Event Task","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" * @return The Event task converted from text","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"D-Limiter"},"content":" public Event writeTaskEvent(String text) {","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":81,"author":{"gitId":"D-Limiter"},"content":" String[] eventPromptElements \u003d text.split(\"[()]\");","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"D-Limiter"},"content":" String taskDescription \u003d eventPromptElements[0].trim().substring(10);","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"D-Limiter"},"content":" String timeInfo \u003d eventPromptElements[1].trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"D-Limiter"},"content":" String[] timeParts \u003d timeInfo.split(\"from:|to:\");","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"D-Limiter"},"content":" String startTime \u003d timeParts[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"D-Limiter"},"content":" String endTime \u003d timeParts[2].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"D-Limiter"},"content":" String[] extractedValues \u003d { taskDescription, startTime, endTime };","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"D-Limiter"},"content":" Event extractedEvent \u003d new Event(extractedValues[0], extractedValues[1], extractedValues[2]);","lastModifiedDate":"2023-09-25"},{"lineNumber":91,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"D-Limiter"},"content":" boolean isMarked \u003d text.charAt(7) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-25"},{"lineNumber":93,"author":{"gitId":"D-Limiter"},"content":" if (isMarked) {","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"D-Limiter"},"content":" extractedEvent.markTask();","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"D-Limiter"},"content":" return extractedEvent;","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent Deadline Task","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"D-Limiter"},"content":" * @param deadlinePrompt The String to be converted to a Deadline Task","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"D-Limiter"},"content":" * @return The Deadline Task from the converted String","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"D-Limiter"},"content":" public Deadline writeTaskDeadline(String deadlinePrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"D-Limiter"},"content":" int index;","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"D-Limiter"},"content":" String deadlineContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"D-Limiter"},"content":" String deadlineTiming \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"D-Limiter"},"content":" boolean isMarked \u003d deadlinePrompt.charAt(7) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"D-Limiter"},"content":" deadlinePrompt \u003d deadlinePrompt.substring(10);","lastModifiedDate":"2023-09-25"},{"lineNumber":112,"author":{"gitId":"D-Limiter"},"content":" String[] deadlinePromptElements \u003d deadlinePrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":113,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":114,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d 0; index \u003c deadlinePromptElements.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":115,"author":{"gitId":"D-Limiter"},"content":" String word \u003d deadlinePromptElements[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":116,"author":{"gitId":"D-Limiter"},"content":" if (word.equals(\"(by:\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":117,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"D-Limiter"},"content":" deadlineContent +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":120,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":122,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d index + 1; index \u003c deadlinePromptElements.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":123,"author":{"gitId":"D-Limiter"},"content":" deadlineTiming +\u003d deadlinePromptElements[index] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":124,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":125,"author":{"gitId":"D-Limiter"},"content":" deadlineContent \u003d deadlineContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":126,"author":{"gitId":"D-Limiter"},"content":" deadlineTiming \u003d deadlineTiming.trim().substring(0, deadlineTiming.length() - 2);","lastModifiedDate":"2023-09-25"},{"lineNumber":127,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":128,"author":{"gitId":"D-Limiter"},"content":" Deadline extractedDeadline \u003d new Deadline(deadlineContent, deadlineTiming);","lastModifiedDate":"2023-09-25"},{"lineNumber":129,"author":{"gitId":"D-Limiter"},"content":" if (isMarked) {","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"D-Limiter"},"content":" extractedDeadline.markTask();","lastModifiedDate":"2023-09-25"},{"lineNumber":131,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"D-Limiter"},"content":" return extractedDeadline;","lastModifiedDate":"2023-09-25"},{"lineNumber":133,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"D-Limiter"},"content":" * This method reads a file and converts its text into an ArrayList of Task objects","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"D-Limiter"},"content":" * @return ArrayList of Tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":138,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"D-Limiter"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-09-02"},{"lineNumber":140,"author":{"gitId":"D-Limiter"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":141,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":142,"author":{"gitId":"D-Limiter"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":143,"author":{"gitId":"D-Limiter"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-02"},{"lineNumber":144,"author":{"gitId":"D-Limiter"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":145,"author":{"gitId":"D-Limiter"},"content":" String prompt \u003d s.nextLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":146,"author":{"gitId":"D-Limiter"},"content":" char taskDefinitionCharacter \u003d prompt.charAt(4);","lastModifiedDate":"2023-09-25"},{"lineNumber":147,"author":{"gitId":"D-Limiter"},"content":" if (taskDefinitionCharacter \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-25"},{"lineNumber":148,"author":{"gitId":"D-Limiter"},"content":" tasks.add(writeTaskToDo(prompt));","lastModifiedDate":"2023-09-25"},{"lineNumber":149,"author":{"gitId":"D-Limiter"},"content":" } else if (taskDefinitionCharacter \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-25"},{"lineNumber":150,"author":{"gitId":"D-Limiter"},"content":" tasks.add(writeTaskEvent(prompt));","lastModifiedDate":"2023-09-25"},{"lineNumber":151,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":152,"author":{"gitId":"D-Limiter"},"content":" tasks.add(writeTaskDeadline(prompt));","lastModifiedDate":"2023-09-25"},{"lineNumber":153,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":154,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":155,"author":{"gitId":"D-Limiter"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":156,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Error! Could not find file!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":157,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":158,"author":{"gitId":"D-Limiter"},"content":" return tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":159,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":160,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":160}},{"path":"src/main/java/alcazar/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Task;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the functionality related to storing the list of tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" public int size() {","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public void markElement(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.tasks.get(index).markTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" public void unmarkElement(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" this.tasks.get(index).unmarkTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" public Task elementAt(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" public void delete(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" public void add(Task newTask) {","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" this.tasks.add(newTask);","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" * Prints the tasks containg String search","lastModifiedDate":"2023-09-10"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" * @param search Phrase to equate the tasks against","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" * @return The tasks containing search","lastModifiedDate":"2023-09-10"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" public String printEquals(String search) {","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" String listedTasks \u003d \"\";","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" String task \u003d tasks.get(i).toString();","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" listedTasks +\u003d task.contains(search)","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" ? (i + 1) + \". \" + task + \"\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" : \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" if (listedTasks.equals(\"\")) {","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" return \"Sorry no matching tasks.\";","lastModifiedDate":"2023-09-10"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" return listedTasks;","lastModifiedDate":"2023-09-10"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" * Evaluates the list of the passed tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" * @return String of all the passed tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" public String getTasks() {","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" String listedTasks \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":" listedTasks +\u003d (i + 1) + \". \" + tasks.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" return listedTasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":77}},{"path":"src/main/java/alcazar/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Deadline;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to add a deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" /** The prompt for the deadline to be added*/","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Constructs a AddDeadlineCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt passed by the user for creating the deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public AddDeadlineCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Executes the addition of a Deadline Task to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective deadline has been added to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If no prompt/topic is given for the deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" public Response execute(TaskList tasks,","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" String commandContents \u003d this.getCommandContent();","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" String[] deadlineContents \u003d this.extractDeadlineContents(commandContents);","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new Deadline(deadlineContents[0], deadlineContents[1]));","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(tasks.size() - 1) + \"\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" + \"Now you have \" + tasks.size() + \" tasks in the list\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" * Extracts the content, the text after the command specification, of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" * passed by the user","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" * @return String containing the command content","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If command is passed without content","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" public String getCommandContent() throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" String[] inputWords \u003d inputPrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" if (inputWords.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! The description of a Deadline cannot be empty.\"","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 1; i \u003c inputWords.length; i++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" commandContent +\u003d inputWords[i] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" commandContent \u003d commandContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" return commandContent;","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":79,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"D-Limiter"},"content":" * Extracts the end timing of the deadline.","lastModifiedDate":"2023-09-25"},{"lineNumber":81,"author":{"gitId":"D-Limiter"},"content":" * @param messageContent The input prompt","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"D-Limiter"},"content":" * @return An array containing the command content and end timing of","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"D-Limiter"},"content":" * the Deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"D-Limiter"},"content":" public String[] extractDeadlineContents(String messageContent) {","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"D-Limiter"},"content":" int index;","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"D-Limiter"},"content":" String deadlineTiming \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"D-Limiter"},"content":" String deadlinePrompt \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"D-Limiter"},"content":" String[] messageContentWords \u003d messageContent.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":91,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"D-Limiter"},"content":" //Extracting deadline prompt","lastModifiedDate":"2023-09-25"},{"lineNumber":93,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d 0; index \u003c messageContentWords.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"D-Limiter"},"content":" String word \u003d messageContentWords[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"D-Limiter"},"content":" if (word.equals(\"/by\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"D-Limiter"},"content":" deadlinePrompt +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":99,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":100,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":101,"author":{"gitId":"D-Limiter"},"content":" //Extracting deadline timing","lastModifiedDate":"2023-09-25"},{"lineNumber":102,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d index + 1; index \u003c messageContentWords.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"D-Limiter"},"content":" String word \u003d messageContentWords[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":104,"author":{"gitId":"D-Limiter"},"content":" deadlineTiming +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":105,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"D-Limiter"},"content":" //Returning the extracted prompt and timing as an array","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"D-Limiter"},"content":" String[] deadlineContents \u003d {deadlinePrompt, deadlineTiming};","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"D-Limiter"},"content":" return deadlineContents;","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":111}},{"path":"src/main/java/alcazar/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Event;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to add an Event","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" /** The prompt passed by the user to add an Event*/","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Constructs an AddEventCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt passed by the user to add an event.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public AddEventCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Executes the addition of a Event Task to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective event has been added to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If no prompt/topic is given for the event","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d this.getCommandContent();","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" String[] eventContents \u003d this.extractEventContents(commandContent);","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new Event(eventContents[0], eventContents[1], eventContents[2]));","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(tasks.size() - 1) + \"\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" + \"Now you have \" + tasks.size() + \" tasks in the list\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" * Extracts the content, the text after the command specification, of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" * passed by the user","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" * @return String containing the command content","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If command is passed without content","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" public String getCommandContent() throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" String[] inputWords \u003d inputPrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" if (inputWords.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(\"☹ OOPS!!! \"","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" + \"The description of an Event cannot be empty.\"","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 1; i \u003c inputWords.length; i++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" commandContent +\u003d inputWords[i] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" commandContent \u003d commandContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" return commandContent;","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":79,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"D-Limiter"},"content":" * Extracts the start and end timings of a deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":81,"author":{"gitId":"D-Limiter"},"content":" * @param messageContent The input text","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"D-Limiter"},"content":" * @return Returns and array containing the command content,","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"D-Limiter"},"content":" * the start and the end times","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"D-Limiter"},"content":" public String[] extractEventContents(String messageContent) {","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"D-Limiter"},"content":" int index;","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"D-Limiter"},"content":" String eventStartTiming \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"D-Limiter"},"content":" String eventEndTiming \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"D-Limiter"},"content":" String eventPrompt \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":91,"author":{"gitId":"D-Limiter"},"content":" String[] messageContentWords \u003d messageContent.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":93,"author":{"gitId":"D-Limiter"},"content":" //Extracting event prompt","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d 0; index \u003c messageContentWords.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"D-Limiter"},"content":" String word \u003d messageContentWords[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"D-Limiter"},"content":" if (word.equals(\"/from\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":99,"author":{"gitId":"D-Limiter"},"content":" eventPrompt +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":100,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":101,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":102,"author":{"gitId":"D-Limiter"},"content":" //Extracting event start timing","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d index + 1; index \u003c messageContentWords.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":104,"author":{"gitId":"D-Limiter"},"content":" String word \u003d messageContentWords[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":105,"author":{"gitId":"D-Limiter"},"content":" if (word.equals(\"/to\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"D-Limiter"},"content":" eventStartTiming +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"D-Limiter"},"content":" //Extracting event end timing","lastModifiedDate":"2023-09-25"},{"lineNumber":112,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d index + 1; index \u003c messageContentWords.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":113,"author":{"gitId":"D-Limiter"},"content":" String word \u003d messageContentWords[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":114,"author":{"gitId":"D-Limiter"},"content":" eventEndTiming +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":115,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":116,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":117,"author":{"gitId":"D-Limiter"},"content":" //Returning the extracted prompt and timing as an array","lastModifiedDate":"2023-09-25"},{"lineNumber":118,"author":{"gitId":"D-Limiter"},"content":" String[] eventContents \u003d {eventPrompt, eventStartTiming, eventEndTiming};","lastModifiedDate":"2023-09-25"},{"lineNumber":119,"author":{"gitId":"D-Limiter"},"content":" return eventContents;","lastModifiedDate":"2023-09-25"},{"lineNumber":120,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":121,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":121}},{"path":"src/main/java/alcazar/commands/AddToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.ToDo;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to add a ToDo","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"public class AddToDoCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" /** The prompt passed by the user to add a ToDo */","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Constructs an AddToDoCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt passed by the user to add an event.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public AddToDoCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Executes the addition of a ToDo Task to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective ToDo has been added to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If no prompt/topic is given for the ToDo","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d this.getCommandContent();","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new ToDo(commandContent));","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(tasks.size() - 1) + \"\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" + \"Now you have \" + tasks.size() + \" tasks in the list\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" * Extracts the content, the text after the command specification, of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" * passed by the user","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" * @return String containing the command content","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If command is passed without content","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" public String getCommandContent() throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" String[] inputWords \u003d inputPrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" if (inputWords.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! The description of a ToDo cannot be empty.\");","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 1; i \u003c inputWords.length; i++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" commandContent +\u003d inputWords[i] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" commandContent \u003d commandContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" return commandContent;","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":78}},{"path":"src/main/java/alcazar/commands/ChangeDataSource.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.AlcazarException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"public class ChangeDataSource extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" public ChangeDataSource(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * Executes the changing of the file path","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the file path has changed","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If no file path is given","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" String filePath \u003d this.getCommandContent();","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" String response \u003d \"Great!, I\u0027ve change the data source file path to: \" + filePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" Response changeFileResponse \u003d new Response(response, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" changeFileResponse.setFilePath(filePath);","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" return changeFileResponse;","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" * Extracts the content, the text after the command specification, of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" * passed by the user","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" * @return String containing the command content","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If command is passed without content","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" public String getCommandContent() throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" String[] inputWords \u003d inputPrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" if (inputWords.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! The file path cannot be empty\"","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 2; i \u003c inputWords.length; i++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" commandContent +\u003d inputWords[i] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" commandContent \u003d commandContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" return commandContent;","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":66}},{"path":"src/main/java/alcazar/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.AlcazarException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a Command object","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" * Executes the Command","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the command has been executed","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @throws AlcazarException If an empty command or out of bounds serial is passed","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public abstract Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws AlcazarException;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":29}},{"path":"src/main/java/alcazar/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidSerialException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Task;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a command to represent deletion of a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" /** The prompt for the task to be deleted*/","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Constructs a DeletCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt which represents the task to be deleted","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public DeleteCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Executes the deletion of a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective Task has been deleted","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidSerialException If the serial number of the task to be deleted is negative","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" * or out of bounds","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidSerialException {","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" char indexToDelete \u003d inputPrompt.charAt(inputPrompt.length() - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" int indexOfElementToDelete \u003d Integer.parseInt( indexToDelete + \"\");","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" if (indexOfElementToDelete \u003e tasks.size()) {","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number greater than \" + (tasks.size()));","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" } else if (indexOfElementToDelete \u003c 0) {","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number less than zero\");","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" Task deletedTask \u003d tasks.elementAt(indexOfElementToDelete - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" tasks.delete(indexOfElementToDelete - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Noted. I\u0027ve removed this task:\\n\" + \" \"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" + deletedTask + \"\\nNow you have \" + tasks.size()","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" + \" tasks in the list\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":66}},{"path":"src/main/java/alcazar/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to exit","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" * Executes the command of exiting","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the user\u0027s exit","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) {","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Goodbye my Master! I hope to be of service soon.\";","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" return true;","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":33}},{"path":"src/main/java/alcazar/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the Command of finding a task","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /** The input prompt to represent the task to be found*/","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Constructs a FindCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The input prompt representing the tasks to be found","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public FindCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" * Executes the command of finding tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @return A Response listing the tasks with the passed prompt","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If the basis keyword for find is empty","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" String wordToSearch \u003d this.getCommandContent();","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Here are the matching tasks in your list:\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" + tasks.printEquals(wordToSearch);","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" * Extracts the content, the text after the command specification, of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" * passed by the user","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" * @return String containing the command content","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If command is passed without content","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" public String getCommandContent() throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" String[] inputWords \u003d inputPrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" if (inputWords.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! The keyword on the basis of which tasks are to \"","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" + \"be found cannot be empty\"","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 1; i \u003c inputWords.length; i++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" commandContent +\u003d inputWords[i] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" commandContent \u003d commandContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" return commandContent;","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":75}},{"path":"src/main/java/alcazar/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to list the passed tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" * Executes the command of listing tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * @return A Response listing the added tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) {","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Here are the tasks in your list:\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" + tasks.getTasks();","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":35}},{"path":"src/main/java/alcazar/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidSerialException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to mark a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /** The passed prompt represent the task to be marked */","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Construct a MarkCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt representing the task to be marked","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public MarkCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" * Executes the marking of a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective Task has been marked","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidSerialException If the serial number of the task to be marked is negative","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * or out of bounds","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidSerialException {","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" char characterIndexToMark \u003d inputPrompt.charAt(inputPrompt.length() - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" int intIndexOfElementToMark \u003d Integer.parseInt( characterIndexToMark + \"\");","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" if (intIndexOfElementToMark \u003e tasks.size()) {","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number greater than \" + (tasks.size()));","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" } else if (intIndexOfElementToMark \u003c 0) {","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number less than zero\");","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" tasks.markElement(intIndexOfElementToMark - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(intIndexOfElementToMark - 1) + \"\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":62}},{"path":"src/main/java/alcazar/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidSerialException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to un-mark a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /** The passed prompt represent the task to be un-marked */","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Construct a UnmarkCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt representing the task to be un-marked","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public UnmarkCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" * Executes the un-marking of a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective Task has been un-marked","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidSerialException If the serial number of the task to be un-marked is negative","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * or out of bounds","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidSerialException {","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" char characterIndexToUnmark \u003d inputPrompt.charAt(inputPrompt.length() - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" int intIndexOfElementToUnmark \u003d Integer.parseInt( characterIndexToUnmark + \"\");","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" if (intIndexOfElementToUnmark \u003e tasks.size()) {","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number greater than \" + (tasks.size()));","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" } else if (intIndexOfElementToUnmark \u003c 0) {","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number less than zero\");","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" tasks.unmarkElement(intIndexOfElementToUnmark - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(intIndexOfElementToUnmark - 1) + \"\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":62}},{"path":"src/main/java/alcazar/exceptions/AlcazarException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.exceptions;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the custom-exceptions thrown in ths project","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class AlcazarException extends Exception {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Constructs an Alcazar Exception","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * @param message The error message","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" public AlcazarException(String message) {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" super(message);","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":15}},{"path":"src/main/java/alcazar/exceptions/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.exceptions;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates an excpetion thrown when an invalid argument is passed","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class InvalidArgumentException extends AlcazarException {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Constructs an InvalidArgumentException","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * @param message The error message","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" public InvalidArgumentException(String message) {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" super(message);","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":15}},{"path":"src/main/java/alcazar/exceptions/InvalidSerialException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.exceptions;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the exception when an invalid serial number is passed","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class InvalidSerialException extends AlcazarException {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new InvalidSerialException","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * @param message The error message","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" public InvalidSerialException(String message) {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" super(message);","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":15}},{"path":"src/main/java/alcazar/exceptions/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.exceptions;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the exception raised when an Invalid task is","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" * passed as input","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"public class InvalidTaskException extends AlcazarException {","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new Invalid Task exception","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" * @param message The error message","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" public InvalidTaskException(String message) {","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" super(message);","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":16}},{"path":"src/main/java/alcazar/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.tasks;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a deadline Task","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /** The deadline completion date in MMM dd yyyy format */","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" private String formattedByDate;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new Deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param description The description of this deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * @param inputByDate The input completion date for this deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" public Deadline(String description, String inputByDate) {","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.formattedByDate \u003d parseDate(inputByDate.trim());","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * Parses the input date into a MMM dd yyyy format","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @param inputByDate The input date, potentially in a different format","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return String representation of the formatted date","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" public String parseDate(String inputByDate) {","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" String dateAfterFormatting \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" LocalDate date \u003d LocalDate.parse(inputByDate, inputFormat);","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" dateAfterFormatting \u003d date.format(outputFormat);","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" dateAfterFormatting \u003d inputByDate;","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" return dateAfterFormatting;","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" * Evaluates String form of a Deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a Deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" + formattedByDate + \")\";","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":53}},{"path":"src/main/java/alcazar/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.tasks;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates an Event Task","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class Event extends Task {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" /** The start time of this event */","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" protected String fromTiming;","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" /** The end time of this event */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" protected String toTiming;","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * Constructs an Event","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" * @param description The description of an event","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * @param fromTiming Start date/time of Event","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param toTiming End date/time of Event.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public Event(String description, String fromTiming, String toTiming) {","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" this.fromTiming \u003d fromTiming;","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.toTiming \u003d toTiming;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Evaluates String form of an Event","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @return String form of an Event","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" return \"[E]\" + super.toString()","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" + \" (from: \" + fromTiming + \" to: \" + toTiming.trim() + \")\";","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":34}},{"path":"src/main/java/alcazar/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.tasks;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class Task {","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" /** Boolean showing whether this task has been marked */","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" private boolean isMarked;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" /** The input prompt describing this task */","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" private String taskPrompt;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new Task","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * @param taskPrompt Input description of this task","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" Task(String taskPrompt) {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" this.taskPrompt \u003d taskPrompt;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" * Marks this task done.","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" public void markTask() {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d true;","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * Marks this task undone.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" * Evaluates String form of a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a Task","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" String marked;","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" if (this.isMarked) {","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" marked \u003d \"X\";","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" marked \u003d \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" return \"[\" + marked + \"] \" + this.taskPrompt;","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":47}},{"path":"src/main/java/alcazar/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.tasks;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a ToDo Task","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new ToDo task","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * @param description The input description of this ToDo","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Evaluates String form of a ToDo task","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a ToDo Task","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":23}},{"path":"src/main/java/alcazar/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.ui;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.MainWindow;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" private Label dialog;","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-10"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-10"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-10"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-10"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" private void flip() {","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-10"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-10"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-10"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-10"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-10"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-10"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" db.flip();","lastModifiedDate":"2023-09-10"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" return db;","lastModifiedDate":"2023-09-10"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":62}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"alcazar.MainWindow\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":19}},{"path":"src/test/java/alcazar/AddEventCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.commands.AddEventCommand;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"public class AddEventCommandTest {","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" @Test","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" void getCommandContentTest() {","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" assertEquals(\"birthday /from 2pm /to 6pm\",","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" new AddEventCommand(\"event birthday /from 2pm /to 6pm\").getCommandContent());","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" } catch (InvalidArgumentException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Exception thrown\");","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" @Test","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" void extractEventContentsTest() {","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" assertEquals(\"birthday\", new AddEventCommand(\"event birthday /from 2pm /to 6pm\")","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" .extractEventContents(\"birthday /from 2pm /to 6pm\")[0]);","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" assertEquals(\"2pm\", new AddEventCommand(\"event birthday /from 2pm /to 6pm\")","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" .extractEventContents(\"birthday /from 2pm /to 6pm\")[1]);","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":27}},{"path":"src/test/java/alcazar/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" void getTasksTest() {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" ArrayList\u003cTask\u003e al \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" al.add(new ToDo(\"read book\"));","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" String s \u003d \"1. [T][ ] read book\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" assertEquals(s, new TaskList(al).getTasks());","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" void elementAtTest() {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" ArrayList\u003cTask\u003e al \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" al.add(new ToDo(\"read book\"));","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" assertEquals(\"[T][ ] read book\", new TaskList(al).elementAt(0).toString());","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":24}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":1}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"javac -cp ..\\src\\main\\java\\Duke.java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke.java","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"D-Limiter":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":"D-Limiter"},"content":"if ! javac -cp ../src/main/java/*.java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"D-Limiter":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"# Alcazar project template","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"This is Alcazar, your own personalised Chatbot ready to do your bidding.","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"## How do I use it?","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"### `todo` ","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"* Add a task that needs to be done without a deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `todo something todo`","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"* For example `todo return a book` to add the task to your task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"### `deadline`","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"* Add a task to be completed by a given date.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `deadline topic of deadline /by yyyy-mm-dd`","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"* For example `deadline submit homework /by 2023-12-01`","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":"### `event`","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":"* Add a task that is going to occur in a specific duration","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `event some event /from start time /to end time`","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":"* For example `event go for a move /from Wed 2pm /to Wed 4pm`","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"### `mark`","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"* Mark a task as done","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `mark task number`","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":"* For example `mark 3` will mark the third task done","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":"### `unmark`","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":"* Mark a task as not done","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `unmark task number`","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":"* For example `unmark 3` will mark the third task not done","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":"### `delete`","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":"* Delete a task","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `delete task number`","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"* For example `delete 3` will delete the third task","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":"### `list`","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"* List all the tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":"* Can be used by the input `list`","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" ","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":"### `find`","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":"* Used to find all the tasks containing a keyword","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"* Can be used by `find keyword`","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"* For example `find books` will result in showing all the tasks containing the word books","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":"### `data source`","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":"* Change the data source of the tasks list storage file","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":"* Can be used by `data source new file path`","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":"* For example `data source ./src/main/java/data/tasks.txt` will change the data source to `./src/main/java/data/tasks.txt`","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":"### `bye`","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"* Close Alcazar","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":"* Can be used by entering `bye`","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":54}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"checkstyle {","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" mainClass.set(\"alcazar.Main\")","lastModifiedDate":"2023-09-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" archiveBaseName \u003d \"alcazar\"","lastModifiedDate":"2023-09-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"D-Limiter":19,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"# Alcazar project template","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"This is Alcazar, your own personalised Chatbot ready to do your bidding.","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"![](https://github.com/D-Limiter/ip/blob/master/docs/Ui.png) ","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"## How do I use it?","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"### `todo` ","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"* Add a task that needs to be done without a deadline","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `todo something todo`","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"* For example `todo return a book` to add the task to your task list.","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"### `deadline`","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"* Add a task to be completed by a given date.","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `deadline topic of deadline /by yyyy-mm-dd`","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"* For example `deadline submit homework /by 2023-12-01`","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":"### `event`","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"* Add a task that is going to occur in a specific duration","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `event some event /from start time /to end time`","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":"* For example `event go for a move /from Wed 2pm /to Wed 4pm`","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"### `mark`","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":"* Mark a task as done","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `mark task number`","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"* For example `mark 3` will mark the third task done","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":"### `unmark`","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":"* Mark a task as not done","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `unmark task number`","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"* For example `unmark 3` will mark the third task not done","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":"### `delete`","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"* Delete a task","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"* Can be used in the form `delete task number`","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":"* For example `delete 3` will delete the third task","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"### `list`","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":"* List all the tasks","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":"* Can be used by the input `list`","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2019-07-29"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":"### `find`","lastModifiedDate":"2023-09-26"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"* Used to find all the tasks containing a keyword","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"* Can be used by `find keyword`","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":"* For example `find books` will result in showing all the tasks containing the word books","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":"### `data source`","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":"* Change the data source of the tasks list storage file","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":"* Can be used by `data source new file path`","lastModifiedDate":"2023-09-26"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":"* For example `data source ./src/main/java/data/tasks.txt` will change the data source to `./src/main/java/data/tasks.txt`","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"### `bye`","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":"* Close Alcazar","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":"* Can be used by entering `bye`","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"D-Limiter":42,"-":13}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" private String by;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" private String d1;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" int i \u003d 0;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" this.by \u003d by.trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" String date \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" for (i \u003d 0; i \u003c by.length(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" if (by.charAt(i) \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" date +\u003d by.charAt(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" DateTimeFormatter df \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" LocalDate d \u003d LocalDate.parse(date);","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" d1 \u003d d.format(df);","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * Used to evaluate String form of a Deadlien","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a Deadline","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" String s \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" by \u003d by.trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" s \u003d \"[D]\" + super.toString() + \" (by: \" + d1 + \" \" + by.substring(i) + \")\";","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" return s;","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":42}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" protected String from;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" protected String to;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" * Used to evaluate String form of a Event","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * @return String form of an Eventgit","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to.trim() + \")\";","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":20}},{"path":"src/main/java/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class InvalidArgumentException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" InvalidArgumentException(String msg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" super(msg);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":5}},{"path":"src/main/java/InvalidSerialException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class InvalidSerialException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" InvalidSerialException(String msg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" super(msg);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":5}},{"path":"src/main/java/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class InvalidTaskException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" InvalidTaskException(String msg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" super(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":5}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" public void parse(String prompt, TaskList tasks, Ui ui, Storage storage) throws InvalidArgumentException, InvalidTaskException, InvalidSerialException {","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" if (prompt.equals(\"list\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Here are the tasks in your list:\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" + tasks.getTasks());","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"mark\") || prompt.contains(\"unmark\") ||","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" prompt.contains(\"delete\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" int index \u003d Integer.parseInt(prompt.charAt(prompt.length() - 1) + \"\");","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" if(index \u003e tasks.size()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" \"an incorrect serial number greater than \" + (tasks.size() - 1));","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" if (prompt.contains(\"unmark\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" tasks.unmarkElement(index - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" System.out.println(","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" \"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" tasks.elementAt(index - 1) + \"\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"delete\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" System.out.print(","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" \"Noted. I\u0027ve removed this task:\\n\" + \" \" +","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" tasks.elementAt(index - 1) + \"\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" tasks.delete(index - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Now you have \" + tasks.size() + \" tasks in the list\\n\" );","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" tasks.markElement(index - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" System.out.println(","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" \"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" tasks.elementAt(index - 1) + \"\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" if (prompt.contains(\"deadline\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" String deadLine[] \u003d this.extractDeadline(this.textAfter(prompt));","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" System.out.println(deadLine[0] + \" ,, \" + deadLine[1] );","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new Deadline(deadLine[0], deadLine[1]));","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"LOLOLOL\\n\"+tasks.elementAt(tasks.size()-1));","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"event\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" String eventData[] \u003d this.extractEvent(this.textAfter(prompt));","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new Event(eventData[2], eventData[0], eventData[1]));","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"todo\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new ToDo(this.textAfter(prompt)));","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidTaskException(","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\"","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(tasks.size() - 1) + \"\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" \"Now you have \" + tasks.size() + \" tasks in the list\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" ui.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":"// prompt \u003d chatBot.inputText();","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit(String prompt) {","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" return prompt.contains(\"bye\");","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" * Method to extract the content of the command","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" * @param sent The String that contains the command content after","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":" * the specified command.","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException if there is not content in the command","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"D-Limiter"},"content":" * @return Sentinel object of type R.","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"D-Limiter"},"content":" public String textAfter(String sent) throws InvalidArgumentException {","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"D-Limiter"},"content":" String reText \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"D-Limiter"},"content":" String command \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"D-Limiter"},"content":" boolean flag \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 0; i \u003c sent.length(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"D-Limiter"},"content":" char ch \u003d sent.charAt(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"D-Limiter"},"content":" if (flag) {","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"D-Limiter"},"content":" reText +\u003d ch;","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"D-Limiter"},"content":" } else if (ch \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"D-Limiter"},"content":" command +\u003d ch;","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"D-Limiter"},"content":" flag \u003d true;","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"D-Limiter"},"content":" if(reText \u003d\u003d \"\") {","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(\"☹ OOPS!!! The description of a \"","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"D-Limiter"},"content":" + command + \" cannot be empty.\");","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"D-Limiter"},"content":" return reText;","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"D-Limiter"},"content":" * Extracts the end timing of the deadline.","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"D-Limiter"},"content":" * @param text The input prompt","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"D-Limiter"},"content":" * @return An array containing the command content and end timing of","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"D-Limiter"},"content":" * the Deadline.","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"D-Limiter"},"content":" public String[] extractDeadline(String text) {","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"D-Limiter"},"content":" String wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"D-Limiter"},"content":" String str \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"D-Limiter"},"content":" int i;","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"D-Limiter"},"content":" for (i \u003d 0; i \u003c text.length(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":113,"author":{"gitId":"D-Limiter"},"content":" char ch \u003d text.charAt(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":114,"author":{"gitId":"D-Limiter"},"content":" if (ch \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":115,"author":{"gitId":"D-Limiter"},"content":" if (wrd.equals(\"/by\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":116,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":117,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"D-Limiter"},"content":" str +\u003d wrd + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"D-Limiter"},"content":" wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":120,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"D-Limiter"},"content":" wrd +\u003d ch;","lastModifiedDate":"2023-09-02"},{"lineNumber":122,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":123,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":124,"author":{"gitId":"D-Limiter"},"content":" String deadArray[] \u003d new String[2];","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"D-Limiter"},"content":" deadArray[0] \u003d str.trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":126,"author":{"gitId":"D-Limiter"},"content":" deadArray[1] \u003d text.substring(i + 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":127,"author":{"gitId":"D-Limiter"},"content":" return deadArray;","lastModifiedDate":"2023-09-02"},{"lineNumber":128,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":129,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":131,"author":{"gitId":"D-Limiter"},"content":" * Method to extract the start and end timings of a deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"D-Limiter"},"content":" * @param text The input text","lastModifiedDate":"2023-09-02"},{"lineNumber":133,"author":{"gitId":"D-Limiter"},"content":" * @return Returns and array containing the command content,","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"D-Limiter"},"content":" * the start and the end times","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"D-Limiter"},"content":" public String[] extractEvent(String text) {","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"D-Limiter"},"content":" String str[] \u003d new String[3];","lastModifiedDate":"2023-09-02"},{"lineNumber":138,"author":{"gitId":"D-Limiter"},"content":" str[0] \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"D-Limiter"},"content":" str[1] \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":140,"author":{"gitId":"D-Limiter"},"content":" str[2] \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":141,"author":{"gitId":"D-Limiter"},"content":" String wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":142,"author":{"gitId":"D-Limiter"},"content":" text \u003d text + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":143,"author":{"gitId":"D-Limiter"},"content":" boolean fromFlag \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":144,"author":{"gitId":"D-Limiter"},"content":" boolean toFlag \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":145,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 0; i \u003c text.length(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":146,"author":{"gitId":"D-Limiter"},"content":" char ch \u003d text.charAt(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":147,"author":{"gitId":"D-Limiter"},"content":" if (ch \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":148,"author":{"gitId":"D-Limiter"},"content":" if (wrd.equals(\"/from\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":149,"author":{"gitId":"D-Limiter"},"content":" fromFlag \u003d true;","lastModifiedDate":"2023-09-02"},{"lineNumber":150,"author":{"gitId":"D-Limiter"},"content":" } else if (wrd.equals(\"/to\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":151,"author":{"gitId":"D-Limiter"},"content":" toFlag \u003d true;","lastModifiedDate":"2023-09-02"},{"lineNumber":152,"author":{"gitId":"D-Limiter"},"content":" fromFlag \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":153,"author":{"gitId":"D-Limiter"},"content":" } else if (fromFlag) {","lastModifiedDate":"2023-09-02"},{"lineNumber":154,"author":{"gitId":"D-Limiter"},"content":" str[0] +\u003d wrd + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":155,"author":{"gitId":"D-Limiter"},"content":" } else if (toFlag) {","lastModifiedDate":"2023-09-02"},{"lineNumber":156,"author":{"gitId":"D-Limiter"},"content":" str[1] +\u003d wrd + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":157,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":158,"author":{"gitId":"D-Limiter"},"content":" str[2] +\u003d wrd + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":159,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":160,"author":{"gitId":"D-Limiter"},"content":" wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":161,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":162,"author":{"gitId":"D-Limiter"},"content":" wrd +\u003d ch;","lastModifiedDate":"2023-09-02"},{"lineNumber":163,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":164,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":165,"author":{"gitId":"D-Limiter"},"content":" str[2] \u003d str[2].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":166,"author":{"gitId":"D-Limiter"},"content":" return str;","lastModifiedDate":"2023-09-02"},{"lineNumber":167,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":168,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":169,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":169}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"import java.io.File;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" private String filePath;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" Storage(String filePath) {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" this.filePath \u003dfilePath;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" printTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Error loading file\");","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" * Prints the contents of the file stored at filePath","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" * @throws FileNotFoundException It is thrown in a situation where the file","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" * does not exist at the given filePath","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" public void printTasks() throws FileNotFoundException {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" * Writes any changes in the tasks to the hard disk","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" * @param filePath Stores the address to the file with the stored tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" * @param tasks The ArrayList containing all the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" public void writeUp(TaskList t) {","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" fw.write(t.getTasks());","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" fw.close();","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" this.printTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"An exception occurred: \" + e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent ToDo Task","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" * @param text String to be converted to a ToDo task","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" * @return The ToDo task converted from text","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" public ToDo taskToDo(String text) {","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" ToDo t \u003d new ToDo(text.substring(10).trim());","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" if (text.charAt(7) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" t.markTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" return t;","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent Event Task","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" * @param text String to be converted to Event Task","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" * @return The Event task converted from text","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" public Event taskEvent(String text) {","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" boolean isMarked \u003d text.charAt(7) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" String[] parts \u003d text.split(\"[()]\");","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" String taskDescription \u003d parts[0].trim().substring(10);","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":" String timeInfo \u003d parts[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" String[] timeParts \u003d timeInfo.split(\"from:|to:\");","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" String startTime \u003d timeParts[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" String endTime \u003d timeParts[2].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":" String[] extractedValues \u003d { taskDescription, startTime, endTime };","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" Event e \u003d new Event(extractedValues[0], extractedValues[1], extractedValues[2]);","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" if (isMarked) {","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" e.markTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"D-Limiter"},"content":" return e;","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent Deadline Task","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"D-Limiter"},"content":" * @param text The String to be converted to a Deadline Task","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"D-Limiter"},"content":" * @return The Deadline Task from the converted String","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"D-Limiter"},"content":" public Deadline taskDeadline(String text) {","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"D-Limiter"},"content":" boolean isMarked \u003d text.charAt(7) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"D-Limiter"},"content":" text \u003d text.substring(10);","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"D-Limiter"},"content":" String wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"D-Limiter"},"content":" String str \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"D-Limiter"},"content":" int i;","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"D-Limiter"},"content":" for (i \u003d 0; i \u003c text.length(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"D-Limiter"},"content":" char ch \u003d text.charAt(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"D-Limiter"},"content":" if (ch \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"D-Limiter"},"content":" if (wrd.equals(\"(by:\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"D-Limiter"},"content":" str +\u003d wrd + \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"D-Limiter"},"content":" wrd \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"D-Limiter"},"content":" wrd +\u003d ch;","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"D-Limiter"},"content":" String deadArray[] \u003d new String[2];","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"D-Limiter"},"content":" deadArray[0] \u003d str.trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"D-Limiter"},"content":" deadArray[1] \u003d text.substring(i + 1, text.length() - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"D-Limiter"},"content":" Deadline d \u003d new Deadline(deadArray[0], deadArray[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"D-Limiter"},"content":" if (isMarked) {","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"D-Limiter"},"content":" d.markTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"D-Limiter"},"content":" return d;","lastModifiedDate":"2023-09-02"},{"lineNumber":113,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":114,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":115,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":116,"author":{"gitId":"D-Limiter"},"content":" * This method reads a file and converts its text into an ArrayList of Task objects","lastModifiedDate":"2023-09-02"},{"lineNumber":117,"author":{"gitId":"D-Limiter"},"content":" * @param filePath The path to the destination where the Tasks are stored","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"D-Limiter"},"content":" * @return ArrayList of Tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":120,"author":{"gitId":"D-Limiter"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"D-Limiter"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":122,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":123,"author":{"gitId":"D-Limiter"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":124,"author":{"gitId":"D-Limiter"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"D-Limiter"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":126,"author":{"gitId":"D-Limiter"},"content":" String prompt \u003d s.nextLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":127,"author":{"gitId":"D-Limiter"},"content":" char ch \u003d prompt.charAt(4);","lastModifiedDate":"2023-09-02"},{"lineNumber":128,"author":{"gitId":"D-Limiter"},"content":" if (ch \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":129,"author":{"gitId":"D-Limiter"},"content":" tasks.add(taskToDo(prompt));","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"D-Limiter"},"content":" } else if (ch \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":131,"author":{"gitId":"D-Limiter"},"content":" tasks.add(taskEvent(prompt));","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":133,"author":{"gitId":"D-Limiter"},"content":" tasks.add(taskDeadline(prompt));","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"D-Limiter"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Error! Could not find file!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":138,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"D-Limiter"},"content":" return tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":140,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":141,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":141}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":" private boolean isMarked;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" private String taskPrompt;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" Task(String taskPrompt) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" this.taskPrompt \u003d taskPrompt;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" * Used to mark this task done.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" public void markTask() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Used to mark this task undone.","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" * Used to evaluate String form of a Task","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a Task","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" String marked \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" if(this.isMarked) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" marked \u003d \"X\";","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" marked \u003d \" \";","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" return \"[\" + marked + \"] \" + this.taskPrompt;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":36}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" public int size() {","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" public void markElement(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" this.tasks.get(index).markTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" public void unmarkElement(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" this.tasks.get(index).unmarkTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" public Task elementAt(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" public void delete(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" public void add(Task t) {","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" this.tasks.add(t);","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" * The method evaluates the list of the passed tasks.","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" * @param tasks The ArrayList containing all the passed commands","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" * @return String of all the passed tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" public String getTasks() {","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" String listedTasks \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" for(int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" listedTasks +\u003d (i + 1) + \". \" + tasks.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" return listedTasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":44}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Used to evaluate String form of a ToDo task","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a ToDo Task","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":16}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"public class Ui {","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" String line \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" System.out.println(line + \" Hello! I\u0027m Alcazar\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" \" What can I do for you?\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" line);","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" String st \u003d sc.nextLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" return st;","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" public void showLine() {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"____________________________________________________________\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" public void showError(String msg) {","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" System.out.println(msg);","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Error loading data from the file\");","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" public void showExitMsg() {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" this.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" System.out.println(","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" this.showLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":31}},{"path":"src/main/java/alcazar/Alcazar.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.commands.Command;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.AlcazarException;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the main method where all the functionality begins.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"public class Alcazar {","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" /** The storage for all the input tasks */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" private Storage storage;","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /** The list of all the passed tasks */","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Constructs new Alcazar object","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" public Alcazar() {","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" String filePath \u003d \"./src/main/java/data/tasks.txt\";","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * Changes the data source file path to the passed location.","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * @param filePath File path to the new data source location","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" public void reInitialiseStorage(String filePath) {","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" * Generates response for the given user input.","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" * @param input The passed user input","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" public Response getResponse(String input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" Response inputResponse;","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" Command command \u003d Parser.parse(input);","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" inputResponse \u003d command.execute(tasks, storage);","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" } catch (AlcazarException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" boolean isUserExiting \u003d false;","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" return new Response(e.getMessage(), isUserExiting);","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" if (inputResponse.isFileChange()) {","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" this.reInitialiseStorage(inputResponse.getFilePath());","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" return inputResponse;","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":54}},{"path":"src/main/java/alcazar/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * A GUI for Alcazar using FXML.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" private Alcazar alcazar \u003d new Alcazar();","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" assert fxmlLoader !\u003d null : \"FXML source not found\";","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setAlcazar(alcazar);","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" stage.show();","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-10"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":36}},{"path":"src/main/java/alcazar/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"import alcazar.ui.DialogBox;","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" private static boolean isExit;","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" private Alcazar alcazar;","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/master.png\"));","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" private Image alcazarImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/Alcazar.png\"));","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" public void initialize() {","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" MainWindow.isExit \u003d false;","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(","lastModifiedDate":"2023-09-10"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" \"Greetings my master! I\u0027m Alcazar\\n\" + \" What can I do for you?\", alcazarImage));","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" public void setAlcazar(Alcazar a) {","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" alcazar \u003d a;","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-10"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-10"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-10"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" if (MainWindow.isExit) {","lastModifiedDate":"2023-09-10"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" System.exit(0);","lastModifiedDate":"2023-09-10"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-10"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" Response response \u003d alcazar.getResponse(input);","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-10"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-10"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" DialogBox.getDukeDialog(response.getResult(), alcazarImage)","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-10"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" if (response.isUserExiting()) {","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" MainWindow.isExit \u003d true;","lastModifiedDate":"2023-09-10"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" userInput.clear();","lastModifiedDate":"2023-09-10"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":64}},{"path":"src/main/java/alcazar/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.commands.*;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.AlcazarException;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidSerialException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidTaskException;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates functionality to parse the input commands","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Interprets the command input.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param prompt The input text","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * @return The Command representing the input prompt","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException In the situation when an InvalidArgument is passed","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidTaskException In the situation when an unrecognized task was passed","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidSerialException In the situation where an invalid serial number is passed","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" public static Command parse(String prompt) throws AlcazarException {","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" if (prompt.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"bye\")) {","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"find\")) {","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" return new FindCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"unmark\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" return new UnmarkCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"mark\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" return new MarkCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"delete\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" return new DeleteCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"deadline\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" return new AddDeadlineCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"event\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" return new AddEventCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"todo\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" return new AddToDoCommand(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" } else if (prompt.contains(\"data source\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" return new ChangeDataSource(prompt);","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidTaskException(","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\"","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":52}},{"path":"src/main/java/alcazar/Response.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a commands response","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class Response {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" /** Response generated from a command*/","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" private String result;","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" /** Boolean to checker whether the command is exit*/","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" private boolean isExit;","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" /** The new data source location */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" private String changedFilePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" /** Boolean to check whether the calling command is ChangeDataSource */","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" private boolean isFileChanging;","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new Response","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * @param result the result of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param isExit whether the command is exit","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public Response(String result, boolean isExit) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.result \u003d result;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" this.isExit \u003d isExit;","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" this.isFileChanging \u003d false;","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" this.changedFilePath \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * Evaluates and returns the result in this Response","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * @return The result in this Response","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" public String getResult() {","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" return this.result;","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" * Evaluates whether this Response was generated from an Exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" * @return Boolean represent whether this Response is by an Exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" public boolean isUserExiting() {","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" return isExit;","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" * Evaluates whether this response was generated by ChangeFileCommand","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" * @return Boolean to check whether this Response was created by a ChangeFileCommand","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" public boolean isFileChange() {","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" return this.isFileChanging;","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" * Changes the changedFilePath to the passed filePath","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" * @param filePath The file path to change the data Source to.","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" public void setFilePath(String filePath) {","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" this.changedFilePath \u003d filePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" this.isFileChanging \u003d true;","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" * Evaluates and returns the changed file path for the data source.","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" * @return The file path to the new data source","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" public String getFilePath() {","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" return this.changedFilePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":70}},{"path":"src/main/java/alcazar/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.io.File;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Deadline;","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Event;","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Task;","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.ToDo;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates file storage related functionality","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" /** The path to the file where all the input tasks are stored */","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" private String filePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" Storage(String filePath) {","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" printTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Error loading file\");","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" * Prints the contents of the file stored at filePath","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" * @throws FileNotFoundException It is thrown in a situation where the file","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" * does not exist at the given filePath","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" public void printTasks() throws FileNotFoundException {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" System.out.println(s.nextLine());","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" * Writes the new tasks to file","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" * @param taskList Stores the tasks in a TaskList object","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" public void writeUp(TaskList taskList) {","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" fw.write(taskList.getTasks());","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" fw.close();","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" this.printTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"An exception occurred: \" + e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent ToDo Task","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" * @param text String to be converted to a ToDo task","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" * @return The ToDo task converted from text","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" public ToDo writeTaskToDo(String text) {","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" ToDo taskToDo \u003d new ToDo(text.substring(10).trim());","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" if (text.charAt(7) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" taskToDo.markTask();","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" return taskToDo;","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent Event Task","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" * @param text String to be converted to Event Task","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" * @return The Event task converted from text","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"D-Limiter"},"content":" public Event writeTaskEvent(String text) {","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":81,"author":{"gitId":"D-Limiter"},"content":" String[] eventPromptElements \u003d text.split(\"[()]\");","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"D-Limiter"},"content":" String taskDescription \u003d eventPromptElements[0].trim().substring(10);","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"D-Limiter"},"content":" String timeInfo \u003d eventPromptElements[1].trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"D-Limiter"},"content":" String[] timeParts \u003d timeInfo.split(\"from:|to:\");","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"D-Limiter"},"content":" String startTime \u003d timeParts[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"D-Limiter"},"content":" String endTime \u003d timeParts[2].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"D-Limiter"},"content":" String[] extractedValues \u003d { taskDescription, startTime, endTime };","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"D-Limiter"},"content":" Event extractedEvent \u003d new Event(extractedValues[0], extractedValues[1], extractedValues[2]);","lastModifiedDate":"2023-09-25"},{"lineNumber":91,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"D-Limiter"},"content":" boolean isMarked \u003d text.charAt(7) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-25"},{"lineNumber":93,"author":{"gitId":"D-Limiter"},"content":" if (isMarked) {","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"D-Limiter"},"content":" extractedEvent.markTask();","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"D-Limiter"},"content":" return extractedEvent;","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"D-Limiter"},"content":" * Converts the input text into its equivalent Deadline Task","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"D-Limiter"},"content":" * @param deadlinePrompt The String to be converted to a Deadline Task","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"D-Limiter"},"content":" * @return The Deadline Task from the converted String","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"D-Limiter"},"content":" public Deadline writeTaskDeadline(String deadlinePrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"D-Limiter"},"content":" int index;","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"D-Limiter"},"content":" String deadlineContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"D-Limiter"},"content":" String deadlineTiming \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"D-Limiter"},"content":" boolean isMarked \u003d deadlinePrompt.charAt(7) \u003d\u003d \u0027X\u0027;","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"D-Limiter"},"content":" deadlinePrompt \u003d deadlinePrompt.substring(10);","lastModifiedDate":"2023-09-25"},{"lineNumber":112,"author":{"gitId":"D-Limiter"},"content":" String[] deadlinePromptElements \u003d deadlinePrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":113,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":114,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d 0; index \u003c deadlinePromptElements.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":115,"author":{"gitId":"D-Limiter"},"content":" String word \u003d deadlinePromptElements[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":116,"author":{"gitId":"D-Limiter"},"content":" if (word.equals(\"(by:\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":117,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"D-Limiter"},"content":" deadlineContent +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":120,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":122,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d index + 1; index \u003c deadlinePromptElements.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":123,"author":{"gitId":"D-Limiter"},"content":" deadlineTiming +\u003d deadlinePromptElements[index] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":124,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":125,"author":{"gitId":"D-Limiter"},"content":" deadlineContent \u003d deadlineContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":126,"author":{"gitId":"D-Limiter"},"content":" deadlineTiming \u003d deadlineTiming.trim().substring(0, deadlineTiming.length() - 2);","lastModifiedDate":"2023-09-25"},{"lineNumber":127,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":128,"author":{"gitId":"D-Limiter"},"content":" Deadline extractedDeadline \u003d new Deadline(deadlineContent, deadlineTiming);","lastModifiedDate":"2023-09-25"},{"lineNumber":129,"author":{"gitId":"D-Limiter"},"content":" if (isMarked) {","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"D-Limiter"},"content":" extractedDeadline.markTask();","lastModifiedDate":"2023-09-25"},{"lineNumber":131,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"D-Limiter"},"content":" return extractedDeadline;","lastModifiedDate":"2023-09-25"},{"lineNumber":133,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"D-Limiter"},"content":" * This method reads a file and converts its text into an ArrayList of Task objects","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"D-Limiter"},"content":" * @return ArrayList of Tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":138,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"D-Limiter"},"content":" public ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2023-09-02"},{"lineNumber":140,"author":{"gitId":"D-Limiter"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":141,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":142,"author":{"gitId":"D-Limiter"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":143,"author":{"gitId":"D-Limiter"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-09-02"},{"lineNumber":144,"author":{"gitId":"D-Limiter"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":145,"author":{"gitId":"D-Limiter"},"content":" String prompt \u003d s.nextLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":146,"author":{"gitId":"D-Limiter"},"content":" char taskDefinitionCharacter \u003d prompt.charAt(4);","lastModifiedDate":"2023-09-25"},{"lineNumber":147,"author":{"gitId":"D-Limiter"},"content":" if (taskDefinitionCharacter \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-25"},{"lineNumber":148,"author":{"gitId":"D-Limiter"},"content":" tasks.add(writeTaskToDo(prompt));","lastModifiedDate":"2023-09-25"},{"lineNumber":149,"author":{"gitId":"D-Limiter"},"content":" } else if (taskDefinitionCharacter \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-25"},{"lineNumber":150,"author":{"gitId":"D-Limiter"},"content":" tasks.add(writeTaskEvent(prompt));","lastModifiedDate":"2023-09-25"},{"lineNumber":151,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":152,"author":{"gitId":"D-Limiter"},"content":" tasks.add(writeTaskDeadline(prompt));","lastModifiedDate":"2023-09-25"},{"lineNumber":153,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":154,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":155,"author":{"gitId":"D-Limiter"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":156,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Error! Could not find file!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":157,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":158,"author":{"gitId":"D-Limiter"},"content":" return tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":159,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":160,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":160}},{"path":"src/main/java/alcazar/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Task;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the functionality related to storing the list of tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" public int size() {","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public void markElement(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.tasks.get(index).markTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" public void unmarkElement(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" this.tasks.get(index).unmarkTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" public Task elementAt(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" public void delete(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" public void add(Task newTask) {","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" this.tasks.add(newTask);","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" * Prints the tasks containg String search","lastModifiedDate":"2023-09-10"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" * @param search Phrase to equate the tasks against","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" * @return The tasks containing search","lastModifiedDate":"2023-09-10"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" public String printEquals(String search) {","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" String listedTasks \u003d \"\";","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" String task \u003d tasks.get(i).toString();","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" listedTasks +\u003d task.contains(search)","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" ? (i + 1) + \". \" + task + \"\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" : \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" if (listedTasks.equals(\"\")) {","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" return \"Sorry no matching tasks.\";","lastModifiedDate":"2023-09-10"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" return listedTasks;","lastModifiedDate":"2023-09-10"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" * Evaluates the list of the passed tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" * @return String of all the passed tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" public String getTasks() {","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" String listedTasks \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":" listedTasks +\u003d (i + 1) + \". \" + tasks.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" return listedTasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":77}},{"path":"src/main/java/alcazar/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Deadline;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to add a deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" /** The prompt for the deadline to be added*/","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Constructs a AddDeadlineCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt passed by the user for creating the deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public AddDeadlineCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Executes the addition of a Deadline Task to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective deadline has been added to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If no prompt/topic is given for the deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" public Response execute(TaskList tasks,","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" String commandContents \u003d this.getCommandContent();","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" String[] deadlineContents \u003d this.extractDeadlineContents(commandContents);","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new Deadline(deadlineContents[0], deadlineContents[1]));","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(tasks.size() - 1) + \"\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" + \"Now you have \" + tasks.size() + \" tasks in the list\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" * Extracts the content, the text after the command specification, of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" * passed by the user","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" * @return String containing the command content","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If command is passed without content","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" public String getCommandContent() throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" String[] inputWords \u003d inputPrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" if (inputWords.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! The description of a Deadline cannot be empty.\"","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 1; i \u003c inputWords.length; i++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" commandContent +\u003d inputWords[i] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" commandContent \u003d commandContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" return commandContent;","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":79,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"D-Limiter"},"content":" * Extracts the end timing of the deadline.","lastModifiedDate":"2023-09-25"},{"lineNumber":81,"author":{"gitId":"D-Limiter"},"content":" * @param messageContent The input prompt","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"D-Limiter"},"content":" * @return An array containing the command content and end timing of","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"D-Limiter"},"content":" * the Deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"D-Limiter"},"content":" public String[] extractDeadlineContents(String messageContent) {","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"D-Limiter"},"content":" int index;","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"D-Limiter"},"content":" String deadlineTiming \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"D-Limiter"},"content":" String deadlinePrompt \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"D-Limiter"},"content":" String[] messageContentWords \u003d messageContent.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":91,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"D-Limiter"},"content":" //Extracting deadline prompt","lastModifiedDate":"2023-09-25"},{"lineNumber":93,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d 0; index \u003c messageContentWords.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"D-Limiter"},"content":" String word \u003d messageContentWords[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"D-Limiter"},"content":" if (word.equals(\"/by\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"D-Limiter"},"content":" deadlinePrompt +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":99,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":100,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":101,"author":{"gitId":"D-Limiter"},"content":" //Extracting deadline timing","lastModifiedDate":"2023-09-25"},{"lineNumber":102,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d index + 1; index \u003c messageContentWords.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"D-Limiter"},"content":" String word \u003d messageContentWords[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":104,"author":{"gitId":"D-Limiter"},"content":" deadlineTiming +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":105,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"D-Limiter"},"content":" //Returning the extracted prompt and timing as an array","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"D-Limiter"},"content":" String[] deadlineContents \u003d {deadlinePrompt, deadlineTiming};","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"D-Limiter"},"content":" return deadlineContents;","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":111}},{"path":"src/main/java/alcazar/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Event;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to add an Event","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" /** The prompt passed by the user to add an Event*/","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Constructs an AddEventCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt passed by the user to add an event.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public AddEventCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Executes the addition of a Event Task to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective event has been added to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If no prompt/topic is given for the event","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d this.getCommandContent();","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" String[] eventContents \u003d this.extractEventContents(commandContent);","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new Event(eventContents[0], eventContents[1], eventContents[2]));","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(tasks.size() - 1) + \"\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" + \"Now you have \" + tasks.size() + \" tasks in the list\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" * Extracts the content, the text after the command specification, of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" * passed by the user","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" * @return String containing the command content","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If command is passed without content","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" public String getCommandContent() throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" String[] inputWords \u003d inputPrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" if (inputWords.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(\"☹ OOPS!!! \"","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" + \"The description of an Event cannot be empty.\"","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 1; i \u003c inputWords.length; i++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" commandContent +\u003d inputWords[i] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" commandContent \u003d commandContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" return commandContent;","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":79,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"D-Limiter"},"content":" * Extracts the start and end timings of a deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":81,"author":{"gitId":"D-Limiter"},"content":" * @param messageContent The input text","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"D-Limiter"},"content":" * @return Returns and array containing the command content,","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"D-Limiter"},"content":" * the start and the end times","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"D-Limiter"},"content":" public String[] extractEventContents(String messageContent) {","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"D-Limiter"},"content":" int index;","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"D-Limiter"},"content":" String eventStartTiming \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"D-Limiter"},"content":" String eventEndTiming \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"D-Limiter"},"content":" String eventPrompt \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":91,"author":{"gitId":"D-Limiter"},"content":" String[] messageContentWords \u003d messageContent.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":93,"author":{"gitId":"D-Limiter"},"content":" //Extracting event prompt","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d 0; index \u003c messageContentWords.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"D-Limiter"},"content":" String word \u003d messageContentWords[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"D-Limiter"},"content":" if (word.equals(\"/from\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":99,"author":{"gitId":"D-Limiter"},"content":" eventPrompt +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":100,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":101,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":102,"author":{"gitId":"D-Limiter"},"content":" //Extracting event start timing","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d index + 1; index \u003c messageContentWords.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":104,"author":{"gitId":"D-Limiter"},"content":" String word \u003d messageContentWords[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":105,"author":{"gitId":"D-Limiter"},"content":" if (word.equals(\"/to\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"D-Limiter"},"content":" break;","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"D-Limiter"},"content":" eventStartTiming +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"D-Limiter"},"content":" //Extracting event end timing","lastModifiedDate":"2023-09-25"},{"lineNumber":112,"author":{"gitId":"D-Limiter"},"content":" for (index \u003d index + 1; index \u003c messageContentWords.length; index++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":113,"author":{"gitId":"D-Limiter"},"content":" String word \u003d messageContentWords[index];","lastModifiedDate":"2023-09-25"},{"lineNumber":114,"author":{"gitId":"D-Limiter"},"content":" eventEndTiming +\u003d word + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":115,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":116,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":117,"author":{"gitId":"D-Limiter"},"content":" //Returning the extracted prompt and timing as an array","lastModifiedDate":"2023-09-25"},{"lineNumber":118,"author":{"gitId":"D-Limiter"},"content":" String[] eventContents \u003d {eventPrompt, eventStartTiming, eventEndTiming};","lastModifiedDate":"2023-09-25"},{"lineNumber":119,"author":{"gitId":"D-Limiter"},"content":" return eventContents;","lastModifiedDate":"2023-09-25"},{"lineNumber":120,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":121,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":121}},{"path":"src/main/java/alcazar/commands/AddToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.ToDo;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to add a ToDo","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"public class AddToDoCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" /** The prompt passed by the user to add a ToDo */","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Constructs an AddToDoCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt passed by the user to add an event.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public AddToDoCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Executes the addition of a ToDo Task to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective ToDo has been added to the TaskList","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If no prompt/topic is given for the ToDo","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d this.getCommandContent();","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" tasks.add(new ToDo(commandContent));","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Got it. I\u0027ve added this task:\\n \"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(tasks.size() - 1) + \"\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" + \"Now you have \" + tasks.size() + \" tasks in the list\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" * Extracts the content, the text after the command specification, of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" * passed by the user","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" * @return String containing the command content","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If command is passed without content","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" public String getCommandContent() throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" String[] inputWords \u003d inputPrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" if (inputWords.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! The description of a ToDo cannot be empty.\");","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 1; i \u003c inputWords.length; i++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" commandContent +\u003d inputWords[i] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":" commandContent \u003d commandContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"D-Limiter"},"content":" return commandContent;","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":78}},{"path":"src/main/java/alcazar/commands/ChangeDataSource.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.AlcazarException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"public class ChangeDataSource extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" public ChangeDataSource(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * Executes the changing of the file path","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the file path has changed","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If no file path is given","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" String filePath \u003d this.getCommandContent();","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" String response \u003d \"Great!, I\u0027ve change the data source file path to: \" + filePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" Response changeFileResponse \u003d new Response(response, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" changeFileResponse.setFilePath(filePath);","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" return changeFileResponse;","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" * Extracts the content, the text after the command specification, of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" * passed by the user","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" * @return String containing the command content","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If command is passed without content","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" public String getCommandContent() throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" String[] inputWords \u003d inputPrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" if (inputWords.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! The file path cannot be empty\"","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 2; i \u003c inputWords.length; i++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" commandContent +\u003d inputWords[i] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" commandContent \u003d commandContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" return commandContent;","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":66}},{"path":"src/main/java/alcazar/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.AlcazarException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a Command object","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" * Executes the Command","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the command has been executed","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @throws AlcazarException If an empty command or out of bounds serial is passed","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public abstract Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws AlcazarException;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":29}},{"path":"src/main/java/alcazar/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidSerialException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import alcazar.tasks.Task;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a command to represent deletion of a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" /** The prompt for the task to be deleted*/","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * Constructs a DeletCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt which represents the task to be deleted","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" public DeleteCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Executes the deletion of a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective Task has been deleted","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidSerialException If the serial number of the task to be deleted is negative","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" * or out of bounds","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidSerialException {","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" char indexToDelete \u003d inputPrompt.charAt(inputPrompt.length() - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" int indexOfElementToDelete \u003d Integer.parseInt( indexToDelete + \"\");","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" if (indexOfElementToDelete \u003e tasks.size()) {","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number greater than \" + (tasks.size()));","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" } else if (indexOfElementToDelete \u003c 0) {","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number less than zero\");","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" Task deletedTask \u003d tasks.elementAt(indexOfElementToDelete - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" tasks.delete(indexOfElementToDelete - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Noted. I\u0027ve removed this task:\\n\" + \" \"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" + deletedTask + \"\\nNow you have \" + tasks.size()","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" + \" tasks in the list\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":66}},{"path":"src/main/java/alcazar/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to exit","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" * Executes the command of exiting","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the user\u0027s exit","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) {","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Goodbye my Master! I hope to be of service soon.\";","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" return true;","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":33}},{"path":"src/main/java/alcazar/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the Command of finding a task","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /** The input prompt to represent the task to be found*/","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Constructs a FindCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The input prompt representing the tasks to be found","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public FindCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" * Executes the command of finding tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @return A Response listing the tasks with the passed prompt","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If the basis keyword for find is empty","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" String wordToSearch \u003d this.getCommandContent();","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Here are the matching tasks in your list:\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" + tasks.printEquals(wordToSearch);","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" * Extracts the content, the text after the command specification, of the command","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" * passed by the user","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" * @return String containing the command content","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidArgumentException If command is passed without content","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" public String getCommandContent() throws InvalidArgumentException {","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" String commandContent \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" String[] inputWords \u003d inputPrompt.split(\" \");","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" if (inputWords.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidArgumentException(","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"D-Limiter"},"content":" \"☹ OOPS!!! The keyword on the basis of which tasks are to \"","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"D-Limiter"},"content":" + \"be found cannot be empty\"","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"D-Limiter"},"content":" );","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"D-Limiter"},"content":" for (int i \u003d 1; i \u003c inputWords.length; i++) {","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"D-Limiter"},"content":" commandContent +\u003d inputWords[i] + \" \";","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"D-Limiter"},"content":" commandContent \u003d commandContent.trim();","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"D-Limiter"},"content":" return commandContent;","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":75}},{"path":"src/main/java/alcazar/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to list the passed tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" * Executes the command of listing tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * @return A Response listing the added tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) {","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Here are the tasks in your list:\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" + tasks.getTasks();","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":35}},{"path":"src/main/java/alcazar/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidSerialException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to mark a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /** The passed prompt represent the task to be marked */","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Construct a MarkCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt representing the task to be marked","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public MarkCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" * Executes the marking of a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective Task has been marked","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidSerialException If the serial number of the task to be marked is negative","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * or out of bounds","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidSerialException {","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" char characterIndexToMark \u003d inputPrompt.charAt(inputPrompt.length() - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" int intIndexOfElementToMark \u003d Integer.parseInt( characterIndexToMark + \"\");","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" if (intIndexOfElementToMark \u003e tasks.size()) {","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number greater than \" + (tasks.size()));","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" } else if (intIndexOfElementToMark \u003c 0) {","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number less than zero\");","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" tasks.markElement(intIndexOfElementToMark - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(intIndexOfElementToMark - 1) + \"\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":62}},{"path":"src/main/java/alcazar/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.commands;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Response;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.Storage;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import alcazar.TaskList;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidSerialException;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the command to un-mark a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /** The passed prompt represent the task to be un-marked */","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" private String inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Construct a UnmarkCommand object","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param inputPrompt The prompt representing the task to be un-marked","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public UnmarkCommand(String inputPrompt) {","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" this.inputPrompt \u003d inputPrompt;","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" * Executes the un-marking of a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" * @param tasks the TaskList containing all the tasks upto present","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * @param storage The Storage which stores all the tasks upto now","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @return A Response to showcase that the respective Task has been un-marked","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @throws InvalidSerialException If the serial number of the task to be un-marked is negative","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * or out of bounds","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" public Response execute(","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" TaskList tasks, Storage storage) throws InvalidSerialException {","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" char characterIndexToUnmark \u003d inputPrompt.charAt(inputPrompt.length() - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" int intIndexOfElementToUnmark \u003d Integer.parseInt( characterIndexToUnmark + \"\");","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" if (intIndexOfElementToUnmark \u003e tasks.size()) {","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number greater than \" + (tasks.size()));","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" } else if (intIndexOfElementToUnmark \u003c 0) {","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" throw new InvalidSerialException(\"☹ OOPS!!! I think you have added \"","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" + \"an incorrect serial number less than zero\");","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" tasks.unmarkElement(intIndexOfElementToUnmark - 1);","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" storage.writeUp(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" String result \u003d \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" + tasks.elementAt(intIndexOfElementToUnmark - 1) + \"\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" return new Response(result, this.isExit());","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" * Checks if this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":" * @return boolean depending on whether this is an exit command","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" return false;","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":62}},{"path":"src/main/java/alcazar/exceptions/AlcazarException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.exceptions;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the custom-exceptions thrown in ths project","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class AlcazarException extends Exception {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Constructs an Alcazar Exception","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * @param message The error message","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" public AlcazarException(String message) {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" super(message);","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":15}},{"path":"src/main/java/alcazar/exceptions/InvalidArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.exceptions;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates an excpetion thrown when an invalid argument is passed","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class InvalidArgumentException extends AlcazarException {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Constructs an InvalidArgumentException","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * @param message The error message","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" public InvalidArgumentException(String message) {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" super(message);","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":15}},{"path":"src/main/java/alcazar/exceptions/InvalidSerialException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.exceptions;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the exception when an invalid serial number is passed","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class InvalidSerialException extends AlcazarException {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new InvalidSerialException","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * @param message The error message","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" public InvalidSerialException(String message) {","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" super(message);","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":15}},{"path":"src/main/java/alcazar/exceptions/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.exceptions;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates the exception raised when an Invalid task is","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" * passed as input","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"public class InvalidTaskException extends AlcazarException {","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new Invalid Task exception","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" * @param message The error message","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" public InvalidTaskException(String message) {","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" super(message);","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":16}},{"path":"src/main/java/alcazar/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.tasks;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a deadline Task","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /** The deadline completion date in MMM dd yyyy format */","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" private String formattedByDate;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new Deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param description The description of this deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" * @param inputByDate The input completion date for this deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" public Deadline(String description, String inputByDate) {","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.formattedByDate \u003d parseDate(inputByDate.trim());","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * Parses the input date into a MMM dd yyyy format","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" * @param inputByDate The input date, potentially in a different format","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * @return String representation of the formatted date","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" public String parseDate(String inputByDate) {","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" String dateAfterFormatting \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" LocalDate date \u003d LocalDate.parse(inputByDate, inputFormat);","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" dateAfterFormatting \u003d date.format(outputFormat);","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" dateAfterFormatting \u003d inputByDate;","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" return dateAfterFormatting;","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" * Evaluates String form of a Deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a Deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" + formattedByDate + \")\";","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":53}},{"path":"src/main/java/alcazar/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.tasks;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates an Event Task","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class Event extends Task {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" /** The start time of this event */","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" protected String fromTiming;","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" /** The end time of this event */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" protected String toTiming;","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * Constructs an Event","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" * @param description The description of an event","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * @param fromTiming Start date/time of Event","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @param toTiming End date/time of Event.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" public Event(String description, String fromTiming, String toTiming) {","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" this.fromTiming \u003d fromTiming;","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" this.toTiming \u003d toTiming;","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" * Evaluates String form of an Event","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" * @return String form of an Event","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" return \"[E]\" + super.toString()","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" + \" (from: \" + fromTiming + \" to: \" + toTiming.trim() + \")\";","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":34}},{"path":"src/main/java/alcazar/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.tasks;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class Task {","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" /** Boolean showing whether this task has been marked */","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" private boolean isMarked;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" /** The input prompt describing this task */","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" private String taskPrompt;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new Task","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" * @param taskPrompt Input description of this task","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" Task(String taskPrompt) {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" this.taskPrompt \u003d taskPrompt;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" * Marks this task done.","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" public void markTask() {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d true;","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" * Marks this task undone.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" * Evaluates String form of a Task","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a Task","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" String marked;","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" if (this.isMarked) {","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" marked \u003d \"X\";","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" marked \u003d \" \";","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" return \"[\" + marked + \"] \" + this.taskPrompt;","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":47}},{"path":"src/main/java/alcazar/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.tasks;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":" * Encapsulates a ToDo Task","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":" * Constructs a new ToDo task","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" * @param description The input description of this ToDo","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" super(description);","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" * Evaluates String form of a ToDo task","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" * @return String form of a ToDo Task","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" public String toString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":23}},{"path":"src/main/java/alcazar/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar.ui;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"import alcazar.MainWindow;","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":"/**","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-10"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" private Label dialog;","lastModifiedDate":"2023-09-10"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":" @FXML","lastModifiedDate":"2023-09-10"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-10"},{"lineNumber":28,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":29,"author":{"gitId":"D-Limiter"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":30,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-10"},{"lineNumber":31,"author":{"gitId":"D-Limiter"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-10"},{"lineNumber":32,"author":{"gitId":"D-Limiter"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-10"},{"lineNumber":33,"author":{"gitId":"D-Limiter"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-10"},{"lineNumber":34,"author":{"gitId":"D-Limiter"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-10"},{"lineNumber":35,"author":{"gitId":"D-Limiter"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-10"},{"lineNumber":36,"author":{"gitId":"D-Limiter"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-10"},{"lineNumber":37,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":38,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":39,"author":{"gitId":"D-Limiter"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-10"},{"lineNumber":40,"author":{"gitId":"D-Limiter"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-10"},{"lineNumber":41,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":42,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":43,"author":{"gitId":"D-Limiter"},"content":" /**","lastModifiedDate":"2023-09-10"},{"lineNumber":44,"author":{"gitId":"D-Limiter"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-10"},{"lineNumber":45,"author":{"gitId":"D-Limiter"},"content":" */","lastModifiedDate":"2023-09-10"},{"lineNumber":46,"author":{"gitId":"D-Limiter"},"content":" private void flip() {","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"D-Limiter"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-10"},{"lineNumber":48,"author":{"gitId":"D-Limiter"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-10"},{"lineNumber":49,"author":{"gitId":"D-Limiter"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-10"},{"lineNumber":50,"author":{"gitId":"D-Limiter"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-10"},{"lineNumber":51,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":52,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":53,"author":{"gitId":"D-Limiter"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":54,"author":{"gitId":"D-Limiter"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-10"},{"lineNumber":55,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":56,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":57,"author":{"gitId":"D-Limiter"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-10"},{"lineNumber":58,"author":{"gitId":"D-Limiter"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-10"},{"lineNumber":59,"author":{"gitId":"D-Limiter"},"content":" db.flip();","lastModifiedDate":"2023-09-10"},{"lineNumber":60,"author":{"gitId":"D-Limiter"},"content":" return db;","lastModifiedDate":"2023-09-10"},{"lineNumber":61,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":62,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":62}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"alcazar.MainWindow\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"D-Limiter":19}},{"path":"src/test/java/alcazar/AddEventCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import alcazar.commands.AddEventCommand;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"import alcazar.exceptions.InvalidArgumentException;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"public class AddEventCommandTest {","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":" @Test","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" void getCommandContentTest() {","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" assertEquals(\"birthday /from 2pm /to 6pm\",","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" new AddEventCommand(\"event birthday /from 2pm /to 6pm\").getCommandContent());","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" } catch (InvalidArgumentException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" System.out.println(\"Exception thrown\");","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" @Test","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" void extractEventContentsTest() {","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" assertEquals(\"birthday\", new AddEventCommand(\"event birthday /from 2pm /to 6pm\")","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" .extractEventContents(\"birthday /from 2pm /to 6pm\")[0]);","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" assertEquals(\"2pm\", new AddEventCommand(\"event birthday /from 2pm /to 6pm\")","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":" .extractEventContents(\"birthday /from 2pm /to 6pm\")[1]);","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"D-Limiter":27}},{"path":"src/test/java/alcazar/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"package alcazar;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"D-Limiter"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"D-Limiter"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"D-Limiter"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"D-Limiter"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"D-Limiter"},"content":" void getTasksTest() {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"D-Limiter"},"content":" ArrayList\u003cTask\u003e al \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"D-Limiter"},"content":" al.add(new ToDo(\"read book\"));","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"D-Limiter"},"content":" String s \u003d \"1. [T][ ] read book\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"D-Limiter"},"content":" assertEquals(s, new TaskList(al).getTasks());","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"D-Limiter"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"D-Limiter"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"D-Limiter"},"content":" void elementAtTest() {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"D-Limiter"},"content":" ArrayList\u003cTask\u003e al \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"D-Limiter"},"content":" al.add(new ToDo(\"read book\"));","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"D-Limiter"},"content":" assertEquals(\"[T][ ] read book\", new TaskList(al).elementAt(0).toString());","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"D-Limiter"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"D-Limiter"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"D-Limiter":24}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"D-Limiter"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"D-Limiter":1}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"D-Limiter"},"content":"javac -cp ..\\src\\main\\java\\Duke.java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke.java","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"D-Limiter":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":"D-Limiter"},"content":"if ! javac -cp ../src/main/java/*.java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"D-Limiter":1,"-":37}}] diff --git a/D-Limiter_ip_master/commits.json b/D-Limiter_ip_master/commits.json index ee4681aa..ff043514 100644 --- a/D-Limiter_ip_master/commits.json +++ b/D-Limiter_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"D-Limiter":[{"date":"2023-08-24","commitResults":[{"hash":"06ae568938319485767404dd8caea1783996f1df","isMergeCommit":false,"messageTitle":"Completing Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}},{"hash":"41ec3644fe4eeece8d96437e7c34b205806bbb24","isMergeCommit":false,"messageTitle":"Completing Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"16d4e82bc958ad1764ae3b2cdd07e651f78e3ea3","isMergeCommit":false,"messageTitle":"Completing Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"a3235fc1779bdffb75ce01fdaee1f52b258b482f","isMergeCommit":false,"messageTitle":"Completing Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":5}}},{"hash":"003fb4f0e353d08477cd6a5be312e9aa998b27bd","isMergeCommit":false,"messageTitle":"Completing Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":124,"deletions":4}}},{"hash":"e3cae1db2c1e405ad588d190ea4d5781f12242f6","isMergeCommit":false,"messageTitle":"Added A-TextUiTesting","messageBody":"","tags":["Level-6","Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":132,"deletions":23},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"238317ad6d39482d3ae3586c575536f904d30859","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 There seems to be some issue and my commits are not reflected. Hence, I must correct this. Thanks!","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-02","commitResults":[{"hash":"ea198de9a07167f57b9ae8a26eb34bc521fd5d71","isMergeCommit":false,"messageTitle":"Add changes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"24c1fdba644c8511d0949f6a6d2ce44a94a55376","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":306,"deletions":0},"bat":{"insertions":21,"deletions":0},"sh":{"insertions":38,"deletions":0},"md":{"insertions":62,"deletions":0}}},{"hash":"aaf62dcf9e955b40d4a2c47f4d88730b9cffb9cc","isMergeCommit":false,"messageTitle":"Add changes for Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":596,"deletions":83}}},{"hash":"d80632bb9beaf533fba4b4977c2904a4bc190992","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"929968d5b5614d5712dd7687710208a60821b7e3","isMergeCommit":false,"messageTitle":"Add changes to resolve commit","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":130}}},{"hash":"e751b99f1d57ab2f22d627704091354da940c6b4","isMergeCommit":false,"messageTitle":"Add changes for Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"a6b67e4d54afd5ffc0aebe2d984df0b811446349","isMergeCommit":false,"messageTitle":"Add changes for A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"90d35b9177ec38c31737857a60fea42209e6c340","isMergeCommit":false,"messageTitle":"Add changes to include all classes in package alcazar","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":832,"deletions":0}}},{"hash":"e2b1365bce7e9a42191abc911776d05c5c8aee95","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"3838b9e871dda39ef1d45082724db1753d5c7ab4","isMergeCommit":false,"messageTitle":"Add J-Unit Tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":0}}}]},{"date":"2023-09-03","commitResults":[{"hash":"9a464e3f93524b5ab665225a2ddd968f9ab21dc3","isMergeCommit":false,"messageTitle":"Add changes for JavaDocs in each public method","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":246}}},{"hash":"78415882a7ca300af4e15e1c5bf9be54b00b9bd0","isMergeCommit":false,"messageTitle":"Add functionality to search for tasks","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":17}}}]},{"date":"2023-09-06","commitResults":[{"hash":"9bfaa034e2168498fb5c7c546bbcbd044b228f2d","isMergeCommit":false,"messageTitle":"Add changes for gradle","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":305}}}]},{"date":"2023-09-10","commitResults":[{"hash":"14683fb7adb1d1ee3e47fee00a859e6bb3bd5caa","isMergeCommit":false,"messageTitle":"Add changes for level-10","messageBody":"","tags":["Level-10","A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":19,"deletions":2},"txt":{"insertions":0,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":347,"deletions":59}}}]},{"date":"2023-09-25","commitResults":[{"hash":"0d1f3dee90d7a459250d35d7b5abd5cd9c3f6cf2","isMergeCommit":false,"messageTitle":"Add changes for code quality improvements","messageBody":"","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":972,"deletions":433}}},{"hash":"9c787b435eb3eaa402f94ba386519acabcec29b0","isMergeCommit":false,"messageTitle":"Add assertions to check for the presence FXML source","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"4c7787d157a788ec44b1d120de523937a4b6cae5","isMergeCommit":false,"messageTitle":"Add changes for assertions","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"1c8dd801d1690a00f7b3ea2746df3c2569590695","isMergeCommit":false,"messageTitle":"Add changes for code quality","messageBody":"","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":808,"deletions":834}}},{"hash":"4b07917426355b7bafaf5042b7b68601c48cee6c","isMergeCommit":true,"messageTitle":"Merge pull request #3 from D-Limiter/codeQuality","messageBody":"Add changes for code quality","fileTypesAndContributionMap":{}},{"hash":"71021bf00479cbd0f412cf011832c6eb52eb2a5d","isMergeCommit":false,"messageTitle":"Add updates for Gradle Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":1}}},{"hash":"951678ab413c836b56e26dab6c351e79be5efb47","isMergeCommit":true,"messageTitle":"Merge pull request #4 from D-Limiter/codeQuality","messageBody":"Add updates for Gradle Testing","fileTypesAndContributionMap":{}},{"hash":"dbc9411a2cf60fa600eedaa5d4f450278704d071","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into assertions","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f49884289e406e8a645e395c2fad0c75abadaf4a","isMergeCommit":true,"messageTitle":"Merge pull request #2 from D-Limiter/assertions","messageBody":"Merg assertions to master","fileTypesAndContributionMap":{}},{"hash":"a355a7be73e58aa1dbe7637cb441fcd44076f194","isMergeCommit":false,"messageTitle":"Add extension","messageBody":"","tags":["C-FlexibleDataSource"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":134,"deletions":13}}},{"hash":"c785aa68ee7e2d0724a0e0b197924a7ae8befec7","isMergeCommit":false,"messageTitle":"Add changes for UI","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"766763e2936e09f410f05ad13481d40271760db5","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Add updates for user guide in README.md","tags":["A-Release"],"fileTypesAndContributionMap":{"md":{"insertions":53,"deletions":24}}}]}]},"authorFileTypeContributionMap":{"D-Limiter":{"java":2096,"md":53,"fxml":35,"sh":1,"bat":1,"gradle":19,"txt":1}},"authorContributionVariance":{"D-Limiter":380617.03},"authorDisplayNameMap":{"D-Limiter":"CS2103T-T11-4 BHAR..NISH"}} +{"authorDailyContributionsMap":{"D-Limiter":[{"date":"2023-08-24","commitResults":[{"hash":"06ae568938319485767404dd8caea1783996f1df","isMergeCommit":false,"messageTitle":"Completing Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}},{"hash":"41ec3644fe4eeece8d96437e7c34b205806bbb24","isMergeCommit":false,"messageTitle":"Completing Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}},{"hash":"16d4e82bc958ad1764ae3b2cdd07e651f78e3ea3","isMergeCommit":false,"messageTitle":"Completing Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"a3235fc1779bdffb75ce01fdaee1f52b258b482f","isMergeCommit":false,"messageTitle":"Completing Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":5}}},{"hash":"003fb4f0e353d08477cd6a5be312e9aa998b27bd","isMergeCommit":false,"messageTitle":"Completing Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":124,"deletions":4}}},{"hash":"e3cae1db2c1e405ad588d190ea4d5781f12242f6","isMergeCommit":false,"messageTitle":"Added A-TextUiTesting","messageBody":"","tags":["Level-6","Level-5","A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":132,"deletions":23},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"238317ad6d39482d3ae3586c575536f904d30859","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 There seems to be some issue and my commits are not reflected. Hence, I must correct this. Thanks!","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-02","commitResults":[{"hash":"ea198de9a07167f57b9ae8a26eb34bc521fd5d71","isMergeCommit":false,"messageTitle":"Add changes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"24c1fdba644c8511d0949f6a6d2ce44a94a55376","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":306,"deletions":0},"bat":{"insertions":21,"deletions":0},"sh":{"insertions":38,"deletions":0},"md":{"insertions":62,"deletions":0}}},{"hash":"aaf62dcf9e955b40d4a2c47f4d88730b9cffb9cc","isMergeCommit":false,"messageTitle":"Add changes for Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":596,"deletions":83}}},{"hash":"d80632bb9beaf533fba4b4977c2904a4bc190992","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"929968d5b5614d5712dd7687710208a60821b7e3","isMergeCommit":false,"messageTitle":"Add changes to resolve commit","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":130}}},{"hash":"e751b99f1d57ab2f22d627704091354da940c6b4","isMergeCommit":false,"messageTitle":"Add changes for Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"a6b67e4d54afd5ffc0aebe2d984df0b811446349","isMergeCommit":false,"messageTitle":"Add changes for A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"90d35b9177ec38c31737857a60fea42209e6c340","isMergeCommit":false,"messageTitle":"Add changes to include all classes in package alcazar","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":832,"deletions":0}}},{"hash":"e2b1365bce7e9a42191abc911776d05c5c8aee95","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"3838b9e871dda39ef1d45082724db1753d5c7ab4","isMergeCommit":false,"messageTitle":"Add J-Unit Tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":0}}}]},{"date":"2023-09-03","commitResults":[{"hash":"9a464e3f93524b5ab665225a2ddd968f9ab21dc3","isMergeCommit":false,"messageTitle":"Add changes for JavaDocs in each public method","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":246}}},{"hash":"78415882a7ca300af4e15e1c5bf9be54b00b9bd0","isMergeCommit":false,"messageTitle":"Add functionality to search for tasks","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":17}}}]},{"date":"2023-09-06","commitResults":[{"hash":"9bfaa034e2168498fb5c7c546bbcbd044b228f2d","isMergeCommit":false,"messageTitle":"Add changes for gradle","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":305}}}]},{"date":"2023-09-10","commitResults":[{"hash":"14683fb7adb1d1ee3e47fee00a859e6bb3bd5caa","isMergeCommit":false,"messageTitle":"Add changes for level-10","messageBody":"","tags":["Level-10","A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":19,"deletions":2},"txt":{"insertions":0,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":347,"deletions":59}}}]},{"date":"2023-09-25","commitResults":[{"hash":"0d1f3dee90d7a459250d35d7b5abd5cd9c3f6cf2","isMergeCommit":false,"messageTitle":"Add changes for code quality improvements","messageBody":"","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":972,"deletions":433}}},{"hash":"9c787b435eb3eaa402f94ba386519acabcec29b0","isMergeCommit":false,"messageTitle":"Add assertions to check for the presence FXML source","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"4c7787d157a788ec44b1d120de523937a4b6cae5","isMergeCommit":false,"messageTitle":"Add changes for assertions","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"1c8dd801d1690a00f7b3ea2746df3c2569590695","isMergeCommit":false,"messageTitle":"Add changes for code quality","messageBody":"","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":808,"deletions":834}}},{"hash":"4b07917426355b7bafaf5042b7b68601c48cee6c","isMergeCommit":true,"messageTitle":"Merge pull request #3 from D-Limiter/codeQuality","messageBody":"Add changes for code quality","fileTypesAndContributionMap":{}},{"hash":"71021bf00479cbd0f412cf011832c6eb52eb2a5d","isMergeCommit":false,"messageTitle":"Add updates for Gradle Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":1}}},{"hash":"951678ab413c836b56e26dab6c351e79be5efb47","isMergeCommit":true,"messageTitle":"Merge pull request #4 from D-Limiter/codeQuality","messageBody":"Add updates for Gradle Testing","fileTypesAndContributionMap":{}},{"hash":"dbc9411a2cf60fa600eedaa5d4f450278704d071","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into assertions","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f49884289e406e8a645e395c2fad0c75abadaf4a","isMergeCommit":true,"messageTitle":"Merge pull request #2 from D-Limiter/assertions","messageBody":"Merg assertions to master","fileTypesAndContributionMap":{}},{"hash":"a355a7be73e58aa1dbe7637cb441fcd44076f194","isMergeCommit":false,"messageTitle":"Add extension","messageBody":"","tags":["C-FlexibleDataSource"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":134,"deletions":13}}},{"hash":"c785aa68ee7e2d0724a0e0b197924a7ae8befec7","isMergeCommit":false,"messageTitle":"Add changes for UI","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"766763e2936e09f410f05ad13481d40271760db5","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"Add updates for user guide in README.md","tags":["A-Release"],"fileTypesAndContributionMap":{"md":{"insertions":53,"deletions":24}}}]},{"date":"2023-09-26","commitResults":[{"hash":"3dd735c587ec3aeceadf3155f28416ee838b6173","isMergeCommit":false,"messageTitle":"Add Screenshot in the Readme","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":1}}},{"hash":"4a225436fef733e78409121439eb550c6bb97541","isMergeCommit":false,"messageTitle":"Add screenshot","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":2}}},{"hash":"726fe7ea07947753e54524072828d9c212f228be","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"c07afe6a7d572f1de8397b756ea2458b4ace0d06","isMergeCommit":false,"messageTitle":"Update screenshot","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":0}}},{"hash":"f0fd80bebc367bf262d7616e98d882a60415886f","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"db480ca05e922036dbb4e35cc2df05d25761b8f2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"e7aa9fba3aea20cf95170990f048e3bd37dbf0db","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":55,"deletions":29}}},{"hash":"1719be2540934534657ba974deb5667df2afcd24","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":0,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"D-Limiter":{"java":2096,"md":96,"fxml":35,"sh":1,"bat":1,"gradle":19,"txt":1}},"authorContributionVariance":{"D-Limiter":371252.16},"authorDisplayNameMap":{"D-Limiter":"CS2103T-T11-4 BHAR..NISH"}} diff --git a/Sasmik23_ip_master/authorship.json b/Sasmik23_ip_master/authorship.json index b19db70b..20e80603 100644 --- a/Sasmik23_ip_master/authorship.json +++ b/Sasmik23_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"# Samantha - duke project template","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"instructions on how to use it.","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" first)","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":"3. After that, locate the `src/main/java/duke.Launcher.java` file, right-click it, and choose `Run Launcher.main()` (if","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" like the below as the output:","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Sasmik23":10,"-":19}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-09-01"},{"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":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2023-09-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":" archiveBaseName \u003d \"samantha\"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Sasmik23":19,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"# Samantha ChatBot","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"Samantha ChatBot is a **desktop app for tracking tasks** using a sophusticated GUI(Graphic User Interface).","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"## Quick start","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"1. Download the latest `samantha.jar`.","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar samantha.jar`","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" ![Ui](Ui.png)","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":"### 1) Adding tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":"You can add three types of tasks : `Todo`, `Deadline` and `Event`","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":"1. Adding **todo** task : `todo DESCRIPTION`","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":"2. Adding **deadline** task : `deadline DESCRIPTION /by DATETIME`","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":"3. Adding **event** task: `event DESCRIPTION /from DATETIME /to DATETIME`","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":"* DATETIME must be in the format {DD/MM/YYYY HHMM}","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" * example: 02/05/2023 1900","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":"### 2) Listing all persons : `list`","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":"Format: `list`","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":"### 3) Editing a person : `delete`","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":"Deletes an existing task in the task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":"Format: `delete INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":" The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":"### 4) Locating tasks by description: `find`","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":"Find tasks with description that contain any of the given keywords.","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"Sasmik23"},"content":"Format: `find KEYWORD`","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"Sasmik23"},"content":"### 5) Marking tasks : `mark`","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"Sasmik23"},"content":"Mark tasks to indicate if they are completed","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"Sasmik23"},"content":"Format: `mark INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"Sasmik23"},"content":"* To unmark a task, use `unmark INDEX` instead","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"Sasmik23"},"content":"* To get the specific index number, use `list` command first","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":65,"author":{"gitId":"Sasmik23"},"content":"### 6) Tagging","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":67,"author":{"gitId":"Sasmik23"},"content":"Create tags for tasks to group them together.","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":69,"author":{"gitId":"Sasmik23"},"content":"Format: `tag INDEX #TAG_NAME`","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":71,"author":{"gitId":"Sasmik23"},"content":"### 7) Exiting the program : `bye`","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":73,"author":{"gitId":"Sasmik23"},"content":"Exits the program.","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":75,"author":{"gitId":"Sasmik23"},"content":"Format: `bye`","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":77,"author":{"gitId":"Sasmik23"},"content":"### Saving the data","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":79,"author":{"gitId":"Sasmik23"},"content":"Task data are saved into the tasks.txt file automatically after any command that changes the data. There is no need to","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"Sasmik23"},"content":"save manually.","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":82,"author":{"gitId":"Sasmik23"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":84,"author":{"gitId":"Sasmik23"},"content":"## Command summary","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":86,"author":{"gitId":"Sasmik23"},"content":" Action | Format, Examples ","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"Sasmik23"},"content":"------------|------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"Sasmik23"},"content":" **Add** | `todo DESCRIPTION` \u003cbr\u003e `deadline DESCRIPTION /by DATETIME` \u003cbr\u003e `event DESCRIPTION /from DATETIME /to DATETIME` ","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"Sasmik23"},"content":" **Mark** | `mark INDEX` \u003cbr\u003e `unmark INDEX` ","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"Sasmik23"},"content":" **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 2` ","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"Sasmik23"},"content":" **Tag** | `tag INDEX #TAGNAME` \u003cbr\u003e e.g.,`tag 2 #urgent` ","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"Sasmik23"},"content":" **Find** | `find KEYWORD`\u003cbr\u003e e.g., `find homework2` ","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"Sasmik23"},"content":" **List** | `list` ","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"Sasmik23"},"content":" **Exit** | `bye` ","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"Sasmik23":69,"-":25}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import duke.ui.Duke;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"public class Launcher {","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":" Application.launch(Duke.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"Sasmik23":17}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Sasmik23":7}},{"path":"src/main/java/duke/exceptions/StorageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"public class StorageException extends Exception {","lastModifiedDate":"2023-09-20"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":" public StorageException(String message) {","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":" super(message);","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-09-20"}],"authorContributionMap":{"Sasmik23":7}},{"path":"src/main/java/duke/filehandler/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.filehandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"import java.io.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"public class Storage {","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" private static String FILE_PATH;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" public Storage(String file_path) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" FILE_PATH \u003d file_path;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" * converts string from saved file to Date object","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" * @param dateString","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" * @return Date","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" public static Date fileDateParser(String dateString) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" SimpleDateFormat sdf \u003d new SimpleDateFormat(\"dd MMM yyyy h a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" Date date \u003d sdf.parse(dateString);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" return date;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"Cannot read time from file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" * Saves tasks in memory to file","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":" * @param tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":" public static void saveTasks(ArrayList\u003cTask\u003e tasks) throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":" File taskFile \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":" if (! taskFile.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":" taskFile.getParentFile().mkdirs();","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"Sasmik23"},"content":" assert taskFile.exists();","lastModifiedDate":"2023-09-17"},{"lineNumber":55,"author":{"gitId":"Sasmik23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"Error creating task file!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"Sasmik23"},"content":" FileWriter taskWriter \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Sasmik23"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"Sasmik23"},"content":" taskWriter.write(task.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"Sasmik23"},"content":" taskWriter.write(\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"Sasmik23"},"content":" taskWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"Sasmik23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\" Error saving tasks to file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":72,"author":{"gitId":"Sasmik23"},"content":" * reads all tasks from saved file","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":74,"author":{"gitId":"Sasmik23"},"content":" * @return tasks as an ArrayList","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Sasmik23"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Sasmik23"},"content":" public static ArrayList\u003cTask\u003e readTasks() throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"Sasmik23"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"Sasmik23"},"content":" File taskFile \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"Sasmik23"},"content":" if (! taskFile.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"Sasmik23"},"content":" taskFile.getParentFile().mkdirs();","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"Sasmik23"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"Sasmik23"},"content":" return tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"Sasmik23"},"content":" Scanner reader \u003d new Scanner(taskFile);","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"Sasmik23"},"content":" while (reader.hasNextLine()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"Sasmik23"},"content":" String data \u003d reader.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"Sasmik23"},"content":" tasks \u003d taskCreator(data, tasks);","lastModifiedDate":"2023-09-17"},{"lineNumber":90,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":91,"author":{"gitId":"Sasmik23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-17"},{"lineNumber":92,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"error reading from file\");","lastModifiedDate":"2023-09-17"},{"lineNumber":93,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":94,"author":{"gitId":"Sasmik23"},"content":" return tasks;","lastModifiedDate":"2023-09-17"},{"lineNumber":95,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":96,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":97,"author":{"gitId":"Sasmik23"},"content":" public static ArrayList\u003cTask\u003e taskCreator(String data, ArrayList\u003cTask\u003e tasks) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":98,"author":{"gitId":"Sasmik23"},"content":" if (data.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-17"},{"lineNumber":99,"author":{"gitId":"Sasmik23"},"content":" return tasks;","lastModifiedDate":"2023-09-17"},{"lineNumber":100,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":101,"author":{"gitId":"Sasmik23"},"content":" if (data.charAt(1) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"Sasmik23"},"content":" String[] description \u003d data.split(\"#\");","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"Sasmik23"},"content":" Todo todo \u003d new Todo(description[0].substring(7));","lastModifiedDate":"2023-09-25"},{"lineNumber":104,"author":{"gitId":"Sasmik23"},"content":" if (data.charAt(4) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"Sasmik23"},"content":" todo.setAction(\"mark\");","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"Sasmik23"},"content":" todo.setTag(description[1]);","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"Sasmik23"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"Sasmik23"},"content":" } else if (data.charAt(1) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Sasmik23"},"content":" //format: [D][X] assignment (by: 02 Feb 2001 7 PM) #urgent","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"Sasmik23"},"content":" String tag \u003d data.split(\"#\")[1];","lastModifiedDate":"2023-09-25"},{"lineNumber":112,"author":{"gitId":"Sasmik23"},"content":" data \u003d data.split(\"#\")[0];","lastModifiedDate":"2023-09-25"},{"lineNumber":113,"author":{"gitId":"Sasmik23"},"content":" String dates \u003d data.split(\":\", 2)[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"Sasmik23"},"content":" String desc \u003d data.split(\"\\\\(\")[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"Sasmik23"},"content":" Date date \u003d fileDateParser(dates.substring(1, dates.length() - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"Sasmik23"},"content":" Deadline deadline \u003d new Deadline(desc.substring(7), date);","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Sasmik23"},"content":" if (data.charAt(4) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"Sasmik23"},"content":" deadline.setAction(\"mark\");","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"Sasmik23"},"content":" deadline.setTag(tag);","lastModifiedDate":"2023-09-25"},{"lineNumber":121,"author":{"gitId":"Sasmik23"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":122,"author":{"gitId":"Sasmik23"},"content":" } else if (data.charAt(1) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"Sasmik23"},"content":" String tag \u003d data.split(\"#\")[1];","lastModifiedDate":"2023-09-25"},{"lineNumber":124,"author":{"gitId":"Sasmik23"},"content":" data \u003d data.split(\"#\")[0];","lastModifiedDate":"2023-09-25"},{"lineNumber":125,"author":{"gitId":"Sasmik23"},"content":" String[] dates \u003d data.split(\":\");","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"Sasmik23"},"content":" String desc \u003d data.split(\"\\\\(\")[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":127,"author":{"gitId":"Sasmik23"},"content":" Date from \u003d fileDateParser(dates[1].substring(1, dates[1].length() - 2));","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"Sasmik23"},"content":" Date to \u003d fileDateParser(dates[2].substring(1, dates[2].length() - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"Sasmik23"},"content":" Event event \u003d new Event(desc.substring(7), from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"Sasmik23"},"content":" if (data.charAt(4) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":131,"author":{"gitId":"Sasmik23"},"content":" event.setAction(\"mark\");","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"Sasmik23"},"content":" event.setTag(tag);","lastModifiedDate":"2023-09-25"},{"lineNumber":134,"author":{"gitId":"Sasmik23"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-29"},{"lineNumber":135,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":136,"author":{"gitId":"Sasmik23"},"content":" return tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":140,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Sasmik23":141}},{"path":"src/main/java/duke/parsers/InputParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.parsers;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import duke.exceptions.StorageException;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"import duke.filehandler.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"import java.text.DateFormat;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"public class InputParser {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" public InputParser(ArrayList\u003cTask\u003e existingTasks) {","lastModifiedDate":"2023-09-08"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" tasks \u003d existingTasks;","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" * Checks user inputs, if invalid throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" * @param str User input split by each word","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" * @param task type of task - todo,event,deadline,mark/unmark","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":" public static void inputChecker(String[] str, String task) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" if (str.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a \" + task + \" cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" * receives string of date and time, returns Date object","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":" * @param str","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" * @return Date","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":" public static Date dateParser(String str) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":" if (str.length() \u003c 15) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"Invalid date, must be of the form dd/mm/yyyy hhmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":" String newStr \u003d str.substring(0, 13) + \":\" + str.substring(13);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":" DateFormat df \u003d new SimpleDateFormat(\"dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":" Date d1 \u003d df.parse(newStr);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Sasmik23"},"content":" return d1;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Sasmik23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"Invalid date\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":60,"author":{"gitId":"Sasmik23"},"content":" * parses user input","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":62,"author":{"gitId":"Sasmik23"},"content":" * @param input","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Sasmik23"},"content":" * @param toStore","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Sasmik23"},"content":" * @return String \"exit app\" if user types in \"bye\", else returns respective response to input","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Sasmik23"},"content":" public String parse(String input, boolean toStore) {","lastModifiedDate":"2023-09-08"},{"lineNumber":67,"author":{"gitId":"Sasmik23"},"content":" String[] splitStr \u003d input.trim().split(\"\\\\s+\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Sasmik23"},"content":" String reply \u003d \"\";","lastModifiedDate":"2023-09-08"},{"lineNumber":69,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Sasmik23"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"Sasmik23"},"content":" if (toStore) {","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"Sasmik23"},"content":" Storage.saveTasks(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \"exit app\";","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":79,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Sasmik23"},"content":" //list out each task from duke.ui.Duke.tasks ArrayList","lastModifiedDate":"2023-09-08"},{"lineNumber":81,"author":{"gitId":"Sasmik23"},"content":" else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \" Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":83,"author":{"gitId":"Sasmik23"},"content":" for (int i \u003d 0; i \u003c Task.getSize(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Sasmik23"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \" \" + index + \".\" + tasks.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":86,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Sasmik23"},"content":" //create Todo object","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Sasmik23"},"content":" Todo t \u003d new Todo(input.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Sasmik23"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d t.addedMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":95,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":97,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Sasmik23"},"content":" //create deadline object, splitting the due date by \"/\" and stripping off the by:","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Sasmik23"},"content":" String[] deadlineArr \u003d input.split(\"/by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Sasmik23"},"content":" Date deadline \u003d dateParser(deadlineArr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Sasmik23"},"content":" Deadline d \u003d new Deadline(deadlineArr[0].substring(9), deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Sasmik23"},"content":" tasks.add(d);","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d d.addedMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":109,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":111,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Sasmik23"},"content":" //create event object, splitting the due date by \"/\" and stripping off the to: and from:","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Sasmik23"},"content":" int startIndex \u003d input.indexOf(\"/from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Sasmik23"},"content":" int endIndex \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"Sasmik23"},"content":" Date from \u003d dateParser(input.substring(startIndex + 6, endIndex - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"Sasmik23"},"content":" Date to \u003d dateParser(input.substring(endIndex + 4));","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"Sasmik23"},"content":" Event e \u003d new Event(input.substring(6, startIndex), from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"Sasmik23"},"content":" tasks.add(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.addedMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":126,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":128,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"Sasmik23"},"content":" //find a certain task","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Sasmik23"},"content":" String toFind \u003d input.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Sasmik23"},"content":" ArrayList\u003cTask\u003e foundTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"Sasmik23"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"Sasmik23"},"content":" if (task.getDescription().contains(toFind)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"Sasmik23"},"content":" foundTasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"Sasmik23"},"content":" if (foundTasks.size() \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \"Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":145,"author":{"gitId":"Sasmik23"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"Sasmik23"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \" \" + index + \".\" + foundTasks.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":148,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"Sasmik23"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \"No tasks called \" + toFind + \" found\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":151,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":154,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"Sasmik23"},"content":" //mark or unmark an existing task","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"mark\") || splitStr[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"mark/unmark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"Sasmik23"},"content":" int index \u003d Integer.parseInt(splitStr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"Sasmik23"},"content":" Task item \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d item.setAction(splitStr[0]);","lastModifiedDate":"2023-09-08"},{"lineNumber":164,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":166,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"Sasmik23"},"content":" //delete task from duke.ui.Duke.tasks ArrayList","lastModifiedDate":"2023-09-08"},{"lineNumber":170,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"delete\");","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"Sasmik23"},"content":" int index \u003d Integer.parseInt(splitStr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"Sasmik23"},"content":" Task item \u003d tasks.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d item.delete();","lastModifiedDate":"2023-09-20"},{"lineNumber":176,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-18"},{"lineNumber":177,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-18"},{"lineNumber":178,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":179,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":180,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":181,"author":{"gitId":"Sasmik23"},"content":" //tag a task by its number in the list","lastModifiedDate":"2023-09-18"},{"lineNumber":182,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"tag\")) {","lastModifiedDate":"2023-09-18"},{"lineNumber":183,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":184,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"tag\");","lastModifiedDate":"2023-09-18"},{"lineNumber":185,"author":{"gitId":"Sasmik23"},"content":" Task item \u003d tasks.get(Integer.parseInt(splitStr[1]) - 1);","lastModifiedDate":"2023-09-18"},{"lineNumber":186,"author":{"gitId":"Sasmik23"},"content":" String[] getTag \u003d input.split(\"#\");","lastModifiedDate":"2023-09-18"},{"lineNumber":187,"author":{"gitId":"Sasmik23"},"content":" inputChecker(getTag, \"tag\");","lastModifiedDate":"2023-09-20"},{"lineNumber":188,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d item.setTag(getTag[1]);","lastModifiedDate":"2023-09-18"},{"lineNumber":189,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":191,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"Sasmik23"},"content":" //unknown command","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"Sasmik23"},"content":" else {","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"Sasmik23"},"content":" return reply;","lastModifiedDate":"2023-09-08"},{"lineNumber":200,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Sasmik23":201}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":" protected Date by;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" protected String formatDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" public Deadline(String description, Date by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" SimpleDateFormat outputFormat \u003d new SimpleDateFormat(\"dd MMM yyyy h a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" this.formatDate \u003d outputFormat.format(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" public String addedMessage() {","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" String ret \u003d \"\";","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \" \" + this + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Now you have \" + super.size + \" tasks in the list.\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" return ret;","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" return \"[D]\" + super.toString() +","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" \"(by: \" + formatDate + \")\" + \" #\" + super.tag;","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sasmik23":30}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":" protected Date from;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" protected Date to;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":" protected String fromFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" protected String toFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":" public Event(String description, Date from, Date to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" SimpleDateFormat outputFormat \u003d new SimpleDateFormat(\"dd MMM yyyy h a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" this.fromFormat \u003d outputFormat.format(from);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" this.toFormat \u003d outputFormat.format(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" public String addedMessage() {","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" String ret \u003d \"\";","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \" \" + this + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Now you have \" + super.size + \" tasks in the list.\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" return ret;","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" \"(from: \" + fromFormat + \" to: \" + toFormat + \")\" + \" #\" + super.tag;","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sasmik23":34}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":" * Task class, superclass to Todo, Deadline and Event subclasses","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":" //total number of tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" protected static int size \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":" protected String description;","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" protected boolean isDone;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" protected String tag \u003d \"no tag\";","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" size \u003d size + 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" public static int getSize() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" return size;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" return this.description;","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" * Sets isDone to true or false depending on user input","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" * @param action string mark or unmark","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" public String setAction(String action) {","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-09-08"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" if (action.equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":" result \u003d \"Nice! I\u0027ve marked this task as done:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":" } else if (action.equals(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":" result \u003d \"OK, I\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":" result +\u003d \" \" + this;","lastModifiedDate":"2023-09-08"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":" return result;","lastModifiedDate":"2023-09-08"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":" public String setTag(String newTag) {","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":" this.tag \u003d newTag;","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":" return (\"#\" + newTag + \" has been set!\");","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":55,"author":{"gitId":"Sasmik23"},"content":" * reduce size of tasks and print remaining number","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Sasmik23"},"content":" public String delete() {","lastModifiedDate":"2023-09-20"},{"lineNumber":58,"author":{"gitId":"Sasmik23"},"content":" size \u003d size - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Sasmik23"},"content":" String ret \u003d \"\";","lastModifiedDate":"2023-09-20"},{"lineNumber":60,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Noted. I\u0027ve removed this task:\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":61,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \" \" + this + \"\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":62,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Now you have \" + size + \" tasks in the list.\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"Sasmik23"},"content":" return ret;","lastModifiedDate":"2023-09-20"},{"lineNumber":64,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":66,"author":{"gitId":"Sasmik23"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"Sasmik23"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"Sasmik23"},"content":" return \"[\" + this.getStatusIcon() + \"] \"","lastModifiedDate":"2023-09-18"},{"lineNumber":69,"author":{"gitId":"Sasmik23"},"content":" + this.description;","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sasmik23":71}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" public String addedMessage() {","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":" String ret \u003d \"\";","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \" \" + this + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Now you have \" + super.size + \" tasks in the list.\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" return ret;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" return \"[T]\" + super.toString() + \" #\" + super.tag;","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sasmik23":20}},{"path":"src/main/java/duke/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.ui;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-08"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-08"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" private Label text;","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" public DialogBox(Label l, ImageView iv) {","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" super(10);","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" text \u003d l;","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" displayPicture \u003d iv;","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" text.setWrapText(true);","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" displayPicture.setFitWidth(100.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" displayPicture.setFitHeight(100.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" this.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" this.getChildren().addAll(text, displayPicture);","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" public static DialogBox getUserDialog(Label l, ImageView iv) {","lastModifiedDate":"2023-09-08"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" return new DialogBox(l, iv);","lastModifiedDate":"2023-09-08"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" public static DialogBox getDukeDialog(Label l, ImageView iv) {","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":" var db \u003d new DialogBox(l, iv);","lastModifiedDate":"2023-09-08"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" db.flip();","lastModifiedDate":"2023-09-08"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" return db;","lastModifiedDate":"2023-09-08"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-20"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":" private void flip() {","lastModifiedDate":"2023-09-20"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":" this.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-20"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-20"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":" FXCollections.reverse(tmp);","lastModifiedDate":"2023-09-20"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":" this.getChildren().setAll(tmp);","lastModifiedDate":"2023-09-20"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"Sasmik23":51}},{"path":"src/main/java/duke/ui/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.ui;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import duke.exceptions.StorageException;","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"import duke.filehandler.Storage;","lastModifiedDate":"2023-09-08"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"import duke.parsers.InputParser;","lastModifiedDate":"2023-09-08"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"import javafx.geometry.Insets;","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":"public class Duke extends Application {","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-17"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" private Scene scene;","lastModifiedDate":"2023-09-08"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" private Storage storage;","lastModifiedDate":"2023-09-08"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/images/samantha.jpeg\"));","lastModifiedDate":"2023-09-08"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":" private Image duke \u003d new Image(this.getClass().getResourceAsStream(\"/images/Trisha_Krishnan_at_PS1_pre_release_event_(3).jpg\"));","lastModifiedDate":"2023-09-08"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" private InputParser parser;","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" public Duke() {","lastModifiedDate":"2023-09-20"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" * Gets tasks from stored text file, stores tasks in parser object","lastModifiedDate":"2023-09-20"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":" * @param filePath","lastModifiedDate":"2023-09-20"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":" * @throws StorageException","lastModifiedDate":"2023-09-20"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":" public void retrieveFromStorage(String filePath) throws StorageException {","lastModifiedDate":"2023-09-20"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-08"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-08"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":" tasks \u003d storage.readTasks();","lastModifiedDate":"2023-09-08"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-08"},{"lineNumber":53,"author":{"gitId":"Sasmik23"},"content":" throw new StorageException(e.getMessage());","lastModifiedDate":"2023-09-20"},{"lineNumber":54,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":55,"author":{"gitId":"Sasmik23"},"content":" this.parser \u003d new InputParser(tasks);","lastModifiedDate":"2023-09-08"},{"lineNumber":56,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":57,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":58,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":59,"author":{"gitId":"Sasmik23"},"content":" * Sets up main window","lastModifiedDate":"2023-09-20"},{"lineNumber":60,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":61,"author":{"gitId":"Sasmik23"},"content":" * @param stage the primary stage for this application, onto which","lastModifiedDate":"2023-09-20"},{"lineNumber":62,"author":{"gitId":"Sasmik23"},"content":" * the application scene can be set.","lastModifiedDate":"2023-09-20"},{"lineNumber":63,"author":{"gitId":"Sasmik23"},"content":" * Applications may create other stages, if needed, but they will not be","lastModifiedDate":"2023-09-20"},{"lineNumber":64,"author":{"gitId":"Sasmik23"},"content":" * primary stages.","lastModifiedDate":"2023-09-20"},{"lineNumber":65,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":66,"author":{"gitId":"Sasmik23"},"content":" @Override","lastModifiedDate":"2023-09-08"},{"lineNumber":67,"author":{"gitId":"Sasmik23"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-08"},{"lineNumber":68,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":69,"author":{"gitId":"Sasmik23"},"content":" //Step 1. Setting up required components","lastModifiedDate":"2023-09-08"},{"lineNumber":70,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":71,"author":{"gitId":"Sasmik23"},"content":" //The container for the content of the chat to scroll.","lastModifiedDate":"2023-09-08"},{"lineNumber":72,"author":{"gitId":"Sasmik23"},"content":" scrollPane \u003d new ScrollPane();","lastModifiedDate":"2023-09-08"},{"lineNumber":73,"author":{"gitId":"Sasmik23"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2023-09-08"},{"lineNumber":74,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2023-09-08"},{"lineNumber":75,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":76,"author":{"gitId":"Sasmik23"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2023-09-08"},{"lineNumber":77,"author":{"gitId":"Sasmik23"},"content":" sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2023-09-08"},{"lineNumber":78,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":79,"author":{"gitId":"Sasmik23"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2023-09-08"},{"lineNumber":80,"author":{"gitId":"Sasmik23"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2023-09-08"},{"lineNumber":81,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":82,"author":{"gitId":"Sasmik23"},"content":" scene \u003d new Scene(mainLayout);","lastModifiedDate":"2023-09-08"},{"lineNumber":83,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":84,"author":{"gitId":"Sasmik23"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-08"},{"lineNumber":85,"author":{"gitId":"Sasmik23"},"content":" stage.show();","lastModifiedDate":"2023-09-08"},{"lineNumber":86,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":87,"author":{"gitId":"Sasmik23"},"content":" stage.setTitle(\"duke.ui.Duke\");","lastModifiedDate":"2023-09-08"},{"lineNumber":88,"author":{"gitId":"Sasmik23"},"content":" stage.setResizable(false);","lastModifiedDate":"2023-09-08"},{"lineNumber":89,"author":{"gitId":"Sasmik23"},"content":" stage.setMinHeight(600.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":90,"author":{"gitId":"Sasmik23"},"content":" stage.setMinWidth(600.0);","lastModifiedDate":"2023-09-20"},{"lineNumber":91,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":92,"author":{"gitId":"Sasmik23"},"content":" mainLayout.setPrefSize(600.0, 600.0);","lastModifiedDate":"2023-09-20"},{"lineNumber":93,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":94,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setPrefSize(585, 535);","lastModifiedDate":"2023-09-20"},{"lineNumber":95,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2023-09-08"},{"lineNumber":96,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2023-09-08"},{"lineNumber":97,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":98,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":99,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2023-09-08"},{"lineNumber":100,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":101,"author":{"gitId":"Sasmik23"},"content":" // You will need to import `javafx.scene.layout.Region` for this.","lastModifiedDate":"2023-09-08"},{"lineNumber":102,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2023-09-08"},{"lineNumber":103,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":104,"author":{"gitId":"Sasmik23"},"content":" userInput.setPrefWidth(525.0);","lastModifiedDate":"2023-09-20"},{"lineNumber":105,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":106,"author":{"gitId":"Sasmik23"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":107,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":108,"author":{"gitId":"Sasmik23"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":109,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":110,"author":{"gitId":"Sasmik23"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":111,"author":{"gitId":"Sasmik23"},"content":" AnchorPane.setRightAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":112,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":113,"author":{"gitId":"Sasmik23"},"content":" AnchorPane.setLeftAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":114,"author":{"gitId":"Sasmik23"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":115,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":116,"author":{"gitId":"Sasmik23"},"content":" //Retrieve existing tasks from storage, display welcome message","lastModifiedDate":"2023-09-20"},{"lineNumber":117,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-20"},{"lineNumber":118,"author":{"gitId":"Sasmik23"},"content":" retrieveFromStorage(\"./samData/tasks.txt\");","lastModifiedDate":"2023-09-25"},{"lineNumber":119,"author":{"gitId":"Sasmik23"},"content":" Label success \u003d new Label(Ui.greetingText());","lastModifiedDate":"2023-09-20"},{"lineNumber":120,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(success, new ImageView(duke)));","lastModifiedDate":"2023-09-20"},{"lineNumber":121,"author":{"gitId":"Sasmik23"},"content":" } catch (StorageException e) {","lastModifiedDate":"2023-09-20"},{"lineNumber":122,"author":{"gitId":"Sasmik23"},"content":" Label error \u003d new Label(e.getMessage());","lastModifiedDate":"2023-09-20"},{"lineNumber":123,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(error, new ImageView(duke)));","lastModifiedDate":"2023-09-20"},{"lineNumber":124,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":125,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":126,"author":{"gitId":"Sasmik23"},"content":" //Part 3. Add functionality to handle user input.","lastModifiedDate":"2023-09-08"},{"lineNumber":127,"author":{"gitId":"Sasmik23"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2023-09-08"},{"lineNumber":128,"author":{"gitId":"Sasmik23"},"content":" handleUserInput();","lastModifiedDate":"2023-09-08"},{"lineNumber":129,"author":{"gitId":"Sasmik23"},"content":" });","lastModifiedDate":"2023-09-08"},{"lineNumber":130,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":131,"author":{"gitId":"Sasmik23"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2023-09-08"},{"lineNumber":132,"author":{"gitId":"Sasmik23"},"content":" handleUserInput();","lastModifiedDate":"2023-09-08"},{"lineNumber":133,"author":{"gitId":"Sasmik23"},"content":" });","lastModifiedDate":"2023-09-08"},{"lineNumber":134,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":135,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2023-09-08"},{"lineNumber":136,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":137,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":138,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":139,"author":{"gitId":"Sasmik23"},"content":" * Iteration 2:","lastModifiedDate":"2023-09-08"},{"lineNumber":140,"author":{"gitId":"Sasmik23"},"content":" * Creates two dialog boxes, one echoing user input and the other containing duke.ui.Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-08"},{"lineNumber":141,"author":{"gitId":"Sasmik23"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-08"},{"lineNumber":142,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":143,"author":{"gitId":"Sasmik23"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-08"},{"lineNumber":144,"author":{"gitId":"Sasmik23"},"content":" Label userText \u003d new Label(\"Samantha: \" + userInput.getText());","lastModifiedDate":"2023-09-20"},{"lineNumber":145,"author":{"gitId":"Sasmik23"},"content":" userText.setPadding(new Insets(5));","lastModifiedDate":"2023-09-20"},{"lineNumber":146,"author":{"gitId":"Sasmik23"},"content":" String dukeReplyStr \u003d getResponse(userInput.getText());","lastModifiedDate":"2023-09-20"},{"lineNumber":147,"author":{"gitId":"Sasmik23"},"content":" //If user types \"bye\", programme will quit","lastModifiedDate":"2023-09-20"},{"lineNumber":148,"author":{"gitId":"Sasmik23"},"content":" if (dukeReplyStr.equals(\"exit app\")) {","lastModifiedDate":"2023-09-20"},{"lineNumber":149,"author":{"gitId":"Sasmik23"},"content":" Label end \u003d new Label(Ui.endingText());","lastModifiedDate":"2023-09-20"},{"lineNumber":150,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(end, new ImageView(duke)));","lastModifiedDate":"2023-09-20"},{"lineNumber":151,"author":{"gitId":"Sasmik23"},"content":" Platform.exit();","lastModifiedDate":"2023-09-20"},{"lineNumber":152,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":153,"author":{"gitId":"Sasmik23"},"content":" Label dukeText \u003d new Label(dukeReplyStr);","lastModifiedDate":"2023-09-20"},{"lineNumber":154,"author":{"gitId":"Sasmik23"},"content":" dukeText.setPadding(new Insets(5));","lastModifiedDate":"2023-09-20"},{"lineNumber":155,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-08"},{"lineNumber":156,"author":{"gitId":"Sasmik23"},"content":" DialogBox.getUserDialog(userText, new ImageView(user)),","lastModifiedDate":"2023-09-08"},{"lineNumber":157,"author":{"gitId":"Sasmik23"},"content":" DialogBox.getDukeDialog(dukeText, new ImageView(duke))","lastModifiedDate":"2023-09-08"},{"lineNumber":158,"author":{"gitId":"Sasmik23"},"content":" );","lastModifiedDate":"2023-09-08"},{"lineNumber":159,"author":{"gitId":"Sasmik23"},"content":" userInput.clear();","lastModifiedDate":"2023-09-08"},{"lineNumber":160,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":161,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":162,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":163,"author":{"gitId":"Sasmik23"},"content":" * Sends user input to parser file","lastModifiedDate":"2023-09-20"},{"lineNumber":164,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":165,"author":{"gitId":"Sasmik23"},"content":" * @param input","lastModifiedDate":"2023-09-20"},{"lineNumber":166,"author":{"gitId":"Sasmik23"},"content":" * @return parsed String","lastModifiedDate":"2023-09-20"},{"lineNumber":167,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":168,"author":{"gitId":"Sasmik23"},"content":" private String getResponse(String input) {","lastModifiedDate":"2023-09-08"},{"lineNumber":169,"author":{"gitId":"Sasmik23"},"content":" return parser.parse(input, true);","lastModifiedDate":"2023-09-20"},{"lineNumber":170,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":171,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"Sasmik23":171}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":" public static String greetingText() {","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":" String ret \u003d \"\";","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Welcome to Samantha\u0027s chatBot!\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"You may add tasks in the following format:\\n\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Todo {description}\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Deadline {description} /by {DD/MM/YYYY HHMM}\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Event {description} /from {DD/MM/YYYY HHMM} /to {DD/MM/YYYY HHMM}\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" return ret;","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" public static String endingText() {","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" return \"See you soon\";","lastModifiedDate":"2023-09-20"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Sasmik23":17}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import duke.parsers.InputParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import org.junit.jupiter.api.MethodOrderer;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"import org.junit.jupiter.api.Order;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"import org.junit.jupiter.api.TestMethodOrder;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"@TestMethodOrder(MethodOrderer.OrderAnnotation.class)","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"public class DukeTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" private InputParser parser \u003d new InputParser(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" @Order(1)","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" public void todoTest() {","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" String actual \u003d parser.parse(\"todo gym\", false);","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" String expected \u003d \"Got it. I\u0027ve added this task:\" + \"\\n\" + \" [T][ ] gym #no tag\" + \"\\n\" + \"Now you have 1 tasks in the list.\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" @Order(2)","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" public void deadlineTest() {","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" String actual \u003d parser.parse(\"deadline assignment /by 02/05/2024 1900\", false);","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" String expected \u003d \"Got it. I\u0027ve added this task:\" + \"\\n\" + \" [D][ ] assignment (by: 02 May 2024 7 PM) #no tag\" + \"\\n\" + \"Now you have 2 tasks in the list.\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" @Test","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":" @Order(3)","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" public void eventTest() {","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":" String actual \u003d parser.parse(\"event soc fair /from 10/05/2023 1000 /to 11/05/2023 1000\", false);","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" String expected \u003d \"Got it. I\u0027ve added this task:\" + \"\\n\" +","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" \" [E][ ] soc fair (from: 10 May 2023 10 AM to: 11 May 2023 10 AM) #no tag\" +","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":" \"\\n\" + \"Now you have 3 tasks in the list.\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-08"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Sasmik23":43}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sasmik23":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":"Sasmik23"},"content":"java -classpath ..\\bin duke.duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Sasmik23":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"# Samantha - duke project template","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"instructions on how to use it.","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" first)","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":"3. After that, locate the `src/main/java/duke.Launcher.java` file, right-click it, and choose `Run Launcher.main()` (if","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" like the below as the output:","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Sasmik23":10,"-":19}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2023-09-01"},{"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":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2023-09-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":" archiveBaseName \u003d \"samantha\"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Sasmik23":19,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"# Samantha ChatBot","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"Samantha ChatBot is a **desktop app for tracking tasks** using a sophusticated GUI(Graphic User Interface).","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"## Quick start","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"1. Download the latest `samantha.jar`.","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar samantha.jar`","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" ![Ui](Ui.png)","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":"### 1) Adding tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":"You can add three types of tasks : `Todo`, `Deadline` and `Event`","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":"1. Adding **todo** task : `todo DESCRIPTION`","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":"2. Adding **deadline** task : `deadline DESCRIPTION /by DATETIME`","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":"3. Adding **event** task: `event DESCRIPTION /from DATETIME /to DATETIME`","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":"* DATETIME must be in the format {DD/MM/YYYY HHMM}","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" * example: 02/05/2023 1900","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":"### 2) Listing all persons : `list`","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":"Format: `list`","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":"### 3) Editing a person : `delete`","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":"Deletes an existing task in the task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":"Format: `delete INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":" The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":"### 4) Locating tasks by description: `find`","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":"Find tasks with description that contain any of the given keywords.","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"Sasmik23"},"content":"Format: `find KEYWORD`","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"Sasmik23"},"content":"### 5) Marking tasks : `mark`","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"Sasmik23"},"content":"Mark tasks to indicate if they are completed","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"Sasmik23"},"content":"Format: `mark INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"Sasmik23"},"content":"* To unmark a task, use `unmark INDEX` instead","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"Sasmik23"},"content":"* To get the specific index number, use `list` command first","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":65,"author":{"gitId":"Sasmik23"},"content":"### 6) Tagging","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":67,"author":{"gitId":"Sasmik23"},"content":"Create tags for tasks to group them together.","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":69,"author":{"gitId":"Sasmik23"},"content":"Format: `tag INDEX #TAG_NAME`","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":71,"author":{"gitId":"Sasmik23"},"content":"### 7) Exiting the program : `bye`","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":73,"author":{"gitId":"Sasmik23"},"content":"Exits the program.","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":75,"author":{"gitId":"Sasmik23"},"content":"Format: `bye`","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":77,"author":{"gitId":"Sasmik23"},"content":"### Saving the data","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":79,"author":{"gitId":"Sasmik23"},"content":"Task data are saved into the tasks.txt file automatically after any command that changes the data. There is no need to","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"Sasmik23"},"content":"save manually.","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":82,"author":{"gitId":"Sasmik23"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":84,"author":{"gitId":"Sasmik23"},"content":"## Command summary","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":86,"author":{"gitId":"Sasmik23"},"content":" Action | Format, Examples ","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"Sasmik23"},"content":"------------|------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"Sasmik23"},"content":" **Add** | `todo DESCRIPTION` \u003cbr\u003e `deadline DESCRIPTION /by DATETIME` \u003cbr\u003e `event DESCRIPTION /from DATETIME /to DATETIME` ","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"Sasmik23"},"content":" **Mark** | `mark INDEX` \u003cbr\u003e `unmark INDEX` ","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"Sasmik23"},"content":" **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 2` ","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"Sasmik23"},"content":" **Tag** | `tag INDEX #TAGNAME` \u003cbr\u003e e.g.,`tag 2 #urgent` ","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"Sasmik23"},"content":" **Find** | `find KEYWORD`\u003cbr\u003e e.g., `find homework2` ","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"Sasmik23"},"content":" **List** | `list` ","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"Sasmik23"},"content":" **Exit** | `bye` ","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"Sasmik23":69,"-":25}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import duke.ui.Duke;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"public class Launcher {","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":" Application.launch(Duke.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"Sasmik23":17}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Sasmik23":7}},{"path":"src/main/java/duke/exceptions/StorageException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"public class StorageException extends Exception {","lastModifiedDate":"2023-09-20"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":" public StorageException(String message) {","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":" super(message);","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-09-20"}],"authorContributionMap":{"Sasmik23":7}},{"path":"src/main/java/duke/filehandler/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.filehandler;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"import java.io.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"public class Storage {","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" private static String FILE_PATH;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" public Storage(String file_path) {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" FILE_PATH \u003d file_path;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" * converts string from saved file to Date object","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" * @param dateString","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" * @return Date","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" public static Date fileDateParser(String dateString) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" SimpleDateFormat sdf \u003d new SimpleDateFormat(\"dd MMM yyyy h a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" Date date \u003d sdf.parse(dateString);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" return date;","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"Cannot read time from file\");","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" * Saves tasks in memory to file","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":" * @param tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":" public static void saveTasks(ArrayList\u003cTask\u003e tasks) throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":" File taskFile \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":" if (! taskFile.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":" taskFile.getParentFile().mkdirs();","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"Sasmik23"},"content":" assert taskFile.exists();","lastModifiedDate":"2023-09-17"},{"lineNumber":55,"author":{"gitId":"Sasmik23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"Error creating task file!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"Sasmik23"},"content":" FileWriter taskWriter \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"Sasmik23"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"Sasmik23"},"content":" taskWriter.write(task.toString());","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"Sasmik23"},"content":" taskWriter.write(\"\\n\");","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"Sasmik23"},"content":" taskWriter.close();","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"Sasmik23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\" Error saving tasks to file\");","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":72,"author":{"gitId":"Sasmik23"},"content":" * reads all tasks from saved file","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":74,"author":{"gitId":"Sasmik23"},"content":" * @return tasks as an ArrayList","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"Sasmik23"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"Sasmik23"},"content":" public static ArrayList\u003cTask\u003e readTasks() throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"Sasmik23"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-29"},{"lineNumber":79,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"Sasmik23"},"content":" File taskFile \u003d new File(FILE_PATH);","lastModifiedDate":"2023-08-29"},{"lineNumber":81,"author":{"gitId":"Sasmik23"},"content":" if (! taskFile.exists()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"Sasmik23"},"content":" taskFile.getParentFile().mkdirs();","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"Sasmik23"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"Sasmik23"},"content":" return tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"Sasmik23"},"content":" Scanner reader \u003d new Scanner(taskFile);","lastModifiedDate":"2023-08-29"},{"lineNumber":87,"author":{"gitId":"Sasmik23"},"content":" while (reader.hasNextLine()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"Sasmik23"},"content":" String data \u003d reader.nextLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":89,"author":{"gitId":"Sasmik23"},"content":" tasks \u003d taskCreator(data, tasks);","lastModifiedDate":"2023-09-17"},{"lineNumber":90,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":91,"author":{"gitId":"Sasmik23"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-17"},{"lineNumber":92,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"error reading from file\");","lastModifiedDate":"2023-09-17"},{"lineNumber":93,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":94,"author":{"gitId":"Sasmik23"},"content":" return tasks;","lastModifiedDate":"2023-09-17"},{"lineNumber":95,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":96,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":97,"author":{"gitId":"Sasmik23"},"content":" public static ArrayList\u003cTask\u003e taskCreator(String data, ArrayList\u003cTask\u003e tasks) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":98,"author":{"gitId":"Sasmik23"},"content":" if (data.length() \u003d\u003d 0) {","lastModifiedDate":"2023-09-17"},{"lineNumber":99,"author":{"gitId":"Sasmik23"},"content":" return tasks;","lastModifiedDate":"2023-09-17"},{"lineNumber":100,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":101,"author":{"gitId":"Sasmik23"},"content":" if (data.charAt(1) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"Sasmik23"},"content":" String[] description \u003d data.split(\"#\");","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"Sasmik23"},"content":" Todo todo \u003d new Todo(description[0].substring(7));","lastModifiedDate":"2023-09-25"},{"lineNumber":104,"author":{"gitId":"Sasmik23"},"content":" if (data.charAt(4) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"Sasmik23"},"content":" todo.setAction(\"mark\");","lastModifiedDate":"2023-08-29"},{"lineNumber":106,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":107,"author":{"gitId":"Sasmik23"},"content":" todo.setTag(description[1]);","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"Sasmik23"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"Sasmik23"},"content":" } else if (data.charAt(1) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"Sasmik23"},"content":" //format: [D][X] assignment (by: 02 Feb 2001 7 PM) #urgent","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"Sasmik23"},"content":" String tag \u003d data.split(\"#\")[1];","lastModifiedDate":"2023-09-25"},{"lineNumber":112,"author":{"gitId":"Sasmik23"},"content":" data \u003d data.split(\"#\")[0];","lastModifiedDate":"2023-09-25"},{"lineNumber":113,"author":{"gitId":"Sasmik23"},"content":" String dates \u003d data.split(\":\", 2)[1];","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"Sasmik23"},"content":" String desc \u003d data.split(\"\\\\(\")[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":115,"author":{"gitId":"Sasmik23"},"content":" Date date \u003d fileDateParser(dates.substring(1, dates.length() - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"Sasmik23"},"content":" Deadline deadline \u003d new Deadline(desc.substring(7), date);","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"Sasmik23"},"content":" if (data.charAt(4) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"Sasmik23"},"content":" deadline.setAction(\"mark\");","lastModifiedDate":"2023-08-29"},{"lineNumber":119,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"Sasmik23"},"content":" deadline.setTag(tag);","lastModifiedDate":"2023-09-25"},{"lineNumber":121,"author":{"gitId":"Sasmik23"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-29"},{"lineNumber":122,"author":{"gitId":"Sasmik23"},"content":" } else if (data.charAt(1) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-01"},{"lineNumber":123,"author":{"gitId":"Sasmik23"},"content":" String tag \u003d data.split(\"#\")[1];","lastModifiedDate":"2023-09-25"},{"lineNumber":124,"author":{"gitId":"Sasmik23"},"content":" data \u003d data.split(\"#\")[0];","lastModifiedDate":"2023-09-25"},{"lineNumber":125,"author":{"gitId":"Sasmik23"},"content":" String[] dates \u003d data.split(\":\");","lastModifiedDate":"2023-08-29"},{"lineNumber":126,"author":{"gitId":"Sasmik23"},"content":" String desc \u003d data.split(\"\\\\(\")[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":127,"author":{"gitId":"Sasmik23"},"content":" Date from \u003d fileDateParser(dates[1].substring(1, dates[1].length() - 2));","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"Sasmik23"},"content":" Date to \u003d fileDateParser(dates[2].substring(1, dates[2].length() - 1));","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"Sasmik23"},"content":" Event event \u003d new Event(desc.substring(7), from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"Sasmik23"},"content":" if (data.charAt(4) \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2023-08-29"},{"lineNumber":131,"author":{"gitId":"Sasmik23"},"content":" event.setAction(\"mark\");","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"Sasmik23"},"content":" event.setTag(tag);","lastModifiedDate":"2023-09-25"},{"lineNumber":134,"author":{"gitId":"Sasmik23"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-29"},{"lineNumber":135,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":136,"author":{"gitId":"Sasmik23"},"content":" return tasks;","lastModifiedDate":"2023-08-29"},{"lineNumber":137,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":140,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":141,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"Sasmik23":141}},{"path":"src/main/java/duke/parsers/InputParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.parsers;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import duke.exceptions.StorageException;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"import duke.filehandler.Storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"import java.text.DateFormat;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"public class InputParser {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" public InputParser(ArrayList\u003cTask\u003e existingTasks) {","lastModifiedDate":"2023-09-08"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" tasks \u003d existingTasks;","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" * Checks user inputs, if invalid throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" * @param str User input split by each word","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" * @param task type of task - todo,event,deadline,mark/unmark","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":" public static void inputChecker(String[] str, String task) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" if (str.length \u003c 2) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a \" + task + \" cannot be empty.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" * receives string of date and time, returns Date object","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":" * @param str","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" * @return Date","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":" public static Date dateParser(String str) throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":" if (str.length() \u003c 15) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"Invalid date, must be of the form dd/mm/yyyy hhmm\");","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":" String newStr \u003d str.substring(0, 13) + \":\" + str.substring(13);","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":" DateFormat df \u003d new SimpleDateFormat(\"dd/MM/yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":" Date d1 \u003d df.parse(newStr);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"Sasmik23"},"content":" return d1;","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"Sasmik23"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"Sasmik23"},"content":" throw new DukeException(\"Invalid date\");","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":60,"author":{"gitId":"Sasmik23"},"content":" * parses user input","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":62,"author":{"gitId":"Sasmik23"},"content":" * @param input","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"Sasmik23"},"content":" * @param toStore","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"Sasmik23"},"content":" * @return String \"exit app\" if user types in \"bye\", else returns respective response to input","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"Sasmik23"},"content":" public String parse(String input, boolean toStore) {","lastModifiedDate":"2023-09-08"},{"lineNumber":67,"author":{"gitId":"Sasmik23"},"content":" String[] splitStr \u003d input.trim().split(\"\\\\s+\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"Sasmik23"},"content":" String reply \u003d \"\";","lastModifiedDate":"2023-09-08"},{"lineNumber":69,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"Sasmik23"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"Sasmik23"},"content":" if (toStore) {","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"Sasmik23"},"content":" Storage.saveTasks(tasks);","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \"exit app\";","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":79,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"Sasmik23"},"content":" //list out each task from duke.ui.Duke.tasks ArrayList","lastModifiedDate":"2023-09-08"},{"lineNumber":81,"author":{"gitId":"Sasmik23"},"content":" else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \" Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":83,"author":{"gitId":"Sasmik23"},"content":" for (int i \u003d 0; i \u003c Task.getSize(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"Sasmik23"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \" \" + index + \".\" + tasks.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":86,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"Sasmik23"},"content":" //create Todo object","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"Sasmik23"},"content":" Todo t \u003d new Todo(input.substring(5));","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"Sasmik23"},"content":" tasks.add(t);","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d t.addedMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":95,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":97,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"Sasmik23"},"content":" //create deadline object, splitting the due date by \"/\" and stripping off the by:","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"Sasmik23"},"content":" String[] deadlineArr \u003d input.split(\"/by \");","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"Sasmik23"},"content":" Date deadline \u003d dateParser(deadlineArr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"Sasmik23"},"content":" Deadline d \u003d new Deadline(deadlineArr[0].substring(9), deadline);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"Sasmik23"},"content":" tasks.add(d);","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d d.addedMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":109,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":111,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"Sasmik23"},"content":" //create event object, splitting the due date by \"/\" and stripping off the to: and from:","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"event\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"Sasmik23"},"content":" int startIndex \u003d input.indexOf(\"/from \");","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"Sasmik23"},"content":" int endIndex \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"Sasmik23"},"content":" Date from \u003d dateParser(input.substring(startIndex + 6, endIndex - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"Sasmik23"},"content":" Date to \u003d dateParser(input.substring(endIndex + 4));","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"Sasmik23"},"content":" Event e \u003d new Event(input.substring(6, startIndex), from, to);","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"Sasmik23"},"content":" tasks.add(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.addedMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":126,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":128,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"Sasmik23"},"content":" //find a certain task","lastModifiedDate":"2023-09-01"},{"lineNumber":132,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"find\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":133,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":134,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":135,"author":{"gitId":"Sasmik23"},"content":" String toFind \u003d input.substring(5);","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"Sasmik23"},"content":" ArrayList\u003cTask\u003e foundTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"Sasmik23"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-01"},{"lineNumber":139,"author":{"gitId":"Sasmik23"},"content":" if (task.getDescription().contains(toFind)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":140,"author":{"gitId":"Sasmik23"},"content":" foundTasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":141,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"Sasmik23"},"content":" if (foundTasks.size() \u003e 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":144,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \"Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":145,"author":{"gitId":"Sasmik23"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) {","lastModifiedDate":"2023-09-01"},{"lineNumber":146,"author":{"gitId":"Sasmik23"},"content":" int index \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":147,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \" \" + index + \".\" + foundTasks.get(i).toString() + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":148,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":149,"author":{"gitId":"Sasmik23"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \"No tasks called \" + toFind + \" found\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":151,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":154,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"Sasmik23"},"content":" //mark or unmark an existing task","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"mark\") || splitStr[0].equals(\"unmark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"mark/unmark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"Sasmik23"},"content":" int index \u003d Integer.parseInt(splitStr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"Sasmik23"},"content":" Task item \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d item.setAction(splitStr[0]);","lastModifiedDate":"2023-09-08"},{"lineNumber":164,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":165,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":166,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"Sasmik23"},"content":" //delete task from duke.ui.Duke.tasks ArrayList","lastModifiedDate":"2023-09-08"},{"lineNumber":170,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"delete\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"delete\");","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"Sasmik23"},"content":" int index \u003d Integer.parseInt(splitStr[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"Sasmik23"},"content":" Task item \u003d tasks.remove(index - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d item.delete();","lastModifiedDate":"2023-09-20"},{"lineNumber":176,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-18"},{"lineNumber":177,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-18"},{"lineNumber":178,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":179,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":180,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":181,"author":{"gitId":"Sasmik23"},"content":" //tag a task by its number in the list","lastModifiedDate":"2023-09-18"},{"lineNumber":182,"author":{"gitId":"Sasmik23"},"content":" else if (splitStr[0].equals(\"tag\")) {","lastModifiedDate":"2023-09-18"},{"lineNumber":183,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":184,"author":{"gitId":"Sasmik23"},"content":" inputChecker(splitStr, \"tag\");","lastModifiedDate":"2023-09-18"},{"lineNumber":185,"author":{"gitId":"Sasmik23"},"content":" Task item \u003d tasks.get(Integer.parseInt(splitStr[1]) - 1);","lastModifiedDate":"2023-09-18"},{"lineNumber":186,"author":{"gitId":"Sasmik23"},"content":" String[] getTag \u003d input.split(\"#\");","lastModifiedDate":"2023-09-18"},{"lineNumber":187,"author":{"gitId":"Sasmik23"},"content":" inputChecker(getTag, \"tag\");","lastModifiedDate":"2023-09-20"},{"lineNumber":188,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d item.setTag(getTag[1]);","lastModifiedDate":"2023-09-18"},{"lineNumber":189,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":191,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"Sasmik23"},"content":" //unknown command","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"Sasmik23"},"content":" else {","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"Sasmik23"},"content":" reply +\u003d \"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":197,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":198,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"Sasmik23"},"content":" return reply;","lastModifiedDate":"2023-09-08"},{"lineNumber":200,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Sasmik23":201}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":" protected Date by;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" protected String formatDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" public Deadline(String description, Date by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" SimpleDateFormat outputFormat \u003d new SimpleDateFormat(\"dd MMM yyyy h a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" this.formatDate \u003d outputFormat.format(by);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" public String addedMessage() {","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" String ret \u003d \"\";","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \" \" + this + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Now you have \" + super.size + \" tasks in the list.\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" return ret;","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" return \"[D]\" + super.toString() +","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" \"(by: \" + formatDate + \")\" + \" #\" + super.tag;","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sasmik23":30}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":" protected Date from;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" protected Date to;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":" protected String fromFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" protected String toFormat;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":" public Event(String description, Date from, Date to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" SimpleDateFormat outputFormat \u003d new SimpleDateFormat(\"dd MMM yyyy h a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" this.fromFormat \u003d outputFormat.format(from);","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" this.toFormat \u003d outputFormat.format(to);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" public String addedMessage() {","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" String ret \u003d \"\";","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \" \" + this + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Now you have \" + super.size + \" tasks in the list.\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" return ret;","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" \"(from: \" + fromFormat + \" to: \" + toFormat + \")\" + \" #\" + super.tag;","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sasmik23":34}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":" * Task class, superclass to Todo, Deadline and Event subclasses","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":" //total number of tasks","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" protected static int size \u003d 0;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":" protected String description;","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" protected boolean isDone;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" protected String tag \u003d \"no tag\";","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" size \u003d size + 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" public static int getSize() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" return size;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" return this.description;","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" * Sets isDone to true or false depending on user input","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" * @param action string mark or unmark","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" public String setAction(String action) {","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":" String result \u003d \"\";","lastModifiedDate":"2023-09-08"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" if (action.equals(\"mark\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":" result \u003d \"Nice! I\u0027ve marked this task as done:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":" } else if (action.equals(\"unmark\")) {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":" result \u003d \"OK, I\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":" result +\u003d \" \" + this;","lastModifiedDate":"2023-09-08"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":" return result;","lastModifiedDate":"2023-09-08"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":" public String setTag(String newTag) {","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":" this.tag \u003d newTag;","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":" return (\"#\" + newTag + \" has been set!\");","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":55,"author":{"gitId":"Sasmik23"},"content":" * reduce size of tasks and print remaining number","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Sasmik23"},"content":" public String delete() {","lastModifiedDate":"2023-09-20"},{"lineNumber":58,"author":{"gitId":"Sasmik23"},"content":" size \u003d size - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Sasmik23"},"content":" String ret \u003d \"\";","lastModifiedDate":"2023-09-20"},{"lineNumber":60,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Noted. I\u0027ve removed this task:\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":61,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \" \" + this + \"\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":62,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Now you have \" + size + \" tasks in the list.\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"Sasmik23"},"content":" return ret;","lastModifiedDate":"2023-09-20"},{"lineNumber":64,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":66,"author":{"gitId":"Sasmik23"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"Sasmik23"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"Sasmik23"},"content":" return \"[\" + this.getStatusIcon() + \"] \"","lastModifiedDate":"2023-09-18"},{"lineNumber":69,"author":{"gitId":"Sasmik23"},"content":" + this.description;","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sasmik23":71}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" public String addedMessage() {","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":" String ret \u003d \"\";","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Got it. I\u0027ve added this task:\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \" \" + this + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Now you have \" + super.size + \" tasks in the list.\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":" return ret;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" return \"[T]\" + super.toString() + \" #\" + super.tag;","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sasmik23":20}},{"path":"src/main/java/duke/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.ui;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-08"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-08"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" private Label text;","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" public DialogBox(Label l, ImageView iv) {","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" super(10);","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" text \u003d l;","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" displayPicture \u003d iv;","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" text.setWrapText(true);","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":" displayPicture.setFitWidth(100.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" displayPicture.setFitHeight(100.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" this.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" this.getChildren().addAll(text, displayPicture);","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" public static DialogBox getUserDialog(Label l, ImageView iv) {","lastModifiedDate":"2023-09-08"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" return new DialogBox(l, iv);","lastModifiedDate":"2023-09-08"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" public static DialogBox getDukeDialog(Label l, ImageView iv) {","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":" var db \u003d new DialogBox(l, iv);","lastModifiedDate":"2023-09-08"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" db.flip();","lastModifiedDate":"2023-09-08"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" return db;","lastModifiedDate":"2023-09-08"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-20"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":" private void flip() {","lastModifiedDate":"2023-09-20"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":" this.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-20"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-20"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":" FXCollections.reverse(tmp);","lastModifiedDate":"2023-09-20"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":" this.getChildren().setAll(tmp);","lastModifiedDate":"2023-09-20"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"Sasmik23":51}},{"path":"src/main/java/duke/ui/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.ui;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import duke.exceptions.StorageException;","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"import duke.filehandler.Storage;","lastModifiedDate":"2023-09-08"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"import duke.parsers.InputParser;","lastModifiedDate":"2023-09-08"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"import javafx.geometry.Insets;","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-08"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-08"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-08"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":"public class Duke extends Application {","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-17"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" private Scene scene;","lastModifiedDate":"2023-09-08"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":" private Storage storage;","lastModifiedDate":"2023-09-08"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/images/little-asian-boy-surprised-1432293.jpg\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":" private Image duke \u003d new Image(this.getClass().getResourceAsStream(\"/images/puppy-1371458.jpg\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" private InputParser parser;","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" public Duke() {","lastModifiedDate":"2023-09-20"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" * Gets tasks from stored text file, stores tasks in parser object","lastModifiedDate":"2023-09-20"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":44,"author":{"gitId":"Sasmik23"},"content":" * @param filePath","lastModifiedDate":"2023-09-20"},{"lineNumber":45,"author":{"gitId":"Sasmik23"},"content":" * @throws StorageException","lastModifiedDate":"2023-09-20"},{"lineNumber":46,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":47,"author":{"gitId":"Sasmik23"},"content":" public void retrieveFromStorage(String filePath) throws StorageException {","lastModifiedDate":"2023-09-20"},{"lineNumber":48,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":49,"author":{"gitId":"Sasmik23"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-08"},{"lineNumber":50,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-08"},{"lineNumber":51,"author":{"gitId":"Sasmik23"},"content":" tasks \u003d storage.readTasks();","lastModifiedDate":"2023-09-08"},{"lineNumber":52,"author":{"gitId":"Sasmik23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-08"},{"lineNumber":53,"author":{"gitId":"Sasmik23"},"content":" throw new StorageException(e.getMessage());","lastModifiedDate":"2023-09-20"},{"lineNumber":54,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":55,"author":{"gitId":"Sasmik23"},"content":" this.parser \u003d new InputParser(tasks);","lastModifiedDate":"2023-09-08"},{"lineNumber":56,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":57,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":58,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":59,"author":{"gitId":"Sasmik23"},"content":" * Sets up main window","lastModifiedDate":"2023-09-20"},{"lineNumber":60,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":61,"author":{"gitId":"Sasmik23"},"content":" * @param stage the primary stage for this application, onto which","lastModifiedDate":"2023-09-20"},{"lineNumber":62,"author":{"gitId":"Sasmik23"},"content":" * the application scene can be set.","lastModifiedDate":"2023-09-20"},{"lineNumber":63,"author":{"gitId":"Sasmik23"},"content":" * Applications may create other stages, if needed, but they will not be","lastModifiedDate":"2023-09-20"},{"lineNumber":64,"author":{"gitId":"Sasmik23"},"content":" * primary stages.","lastModifiedDate":"2023-09-20"},{"lineNumber":65,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":66,"author":{"gitId":"Sasmik23"},"content":" @Override","lastModifiedDate":"2023-09-08"},{"lineNumber":67,"author":{"gitId":"Sasmik23"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-08"},{"lineNumber":68,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":69,"author":{"gitId":"Sasmik23"},"content":" //Step 1. Setting up required components","lastModifiedDate":"2023-09-08"},{"lineNumber":70,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":71,"author":{"gitId":"Sasmik23"},"content":" //The container for the content of the chat to scroll.","lastModifiedDate":"2023-09-08"},{"lineNumber":72,"author":{"gitId":"Sasmik23"},"content":" scrollPane \u003d new ScrollPane();","lastModifiedDate":"2023-09-08"},{"lineNumber":73,"author":{"gitId":"Sasmik23"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2023-09-08"},{"lineNumber":74,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2023-09-08"},{"lineNumber":75,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":76,"author":{"gitId":"Sasmik23"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2023-09-08"},{"lineNumber":77,"author":{"gitId":"Sasmik23"},"content":" sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2023-09-08"},{"lineNumber":78,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":79,"author":{"gitId":"Sasmik23"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2023-09-08"},{"lineNumber":80,"author":{"gitId":"Sasmik23"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2023-09-08"},{"lineNumber":81,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":82,"author":{"gitId":"Sasmik23"},"content":" scene \u003d new Scene(mainLayout);","lastModifiedDate":"2023-09-08"},{"lineNumber":83,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":84,"author":{"gitId":"Sasmik23"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-08"},{"lineNumber":85,"author":{"gitId":"Sasmik23"},"content":" stage.show();","lastModifiedDate":"2023-09-08"},{"lineNumber":86,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":87,"author":{"gitId":"Sasmik23"},"content":" stage.setTitle(\"duke.ui.Duke\");","lastModifiedDate":"2023-09-08"},{"lineNumber":88,"author":{"gitId":"Sasmik23"},"content":" stage.setResizable(false);","lastModifiedDate":"2023-09-08"},{"lineNumber":89,"author":{"gitId":"Sasmik23"},"content":" stage.setMinHeight(600.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":90,"author":{"gitId":"Sasmik23"},"content":" stage.setMinWidth(600.0);","lastModifiedDate":"2023-09-20"},{"lineNumber":91,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":92,"author":{"gitId":"Sasmik23"},"content":" mainLayout.setPrefSize(600.0, 600.0);","lastModifiedDate":"2023-09-20"},{"lineNumber":93,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":94,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setPrefSize(585, 535);","lastModifiedDate":"2023-09-20"},{"lineNumber":95,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2023-09-08"},{"lineNumber":96,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2023-09-08"},{"lineNumber":97,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":98,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":99,"author":{"gitId":"Sasmik23"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2023-09-08"},{"lineNumber":100,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":101,"author":{"gitId":"Sasmik23"},"content":" // You will need to import `javafx.scene.layout.Region` for this.","lastModifiedDate":"2023-09-08"},{"lineNumber":102,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2023-09-08"},{"lineNumber":103,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":104,"author":{"gitId":"Sasmik23"},"content":" userInput.setPrefWidth(525.0);","lastModifiedDate":"2023-09-20"},{"lineNumber":105,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":106,"author":{"gitId":"Sasmik23"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":107,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":108,"author":{"gitId":"Sasmik23"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":109,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":110,"author":{"gitId":"Sasmik23"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":111,"author":{"gitId":"Sasmik23"},"content":" AnchorPane.setRightAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":112,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":113,"author":{"gitId":"Sasmik23"},"content":" AnchorPane.setLeftAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":114,"author":{"gitId":"Sasmik23"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-08"},{"lineNumber":115,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":116,"author":{"gitId":"Sasmik23"},"content":" //Retrieve existing tasks from storage, display welcome message","lastModifiedDate":"2023-09-20"},{"lineNumber":117,"author":{"gitId":"Sasmik23"},"content":" try {","lastModifiedDate":"2023-09-20"},{"lineNumber":118,"author":{"gitId":"Sasmik23"},"content":" retrieveFromStorage(\"./samData/tasks.txt\");","lastModifiedDate":"2023-09-25"},{"lineNumber":119,"author":{"gitId":"Sasmik23"},"content":" Label success \u003d new Label(Ui.greetingText());","lastModifiedDate":"2023-09-20"},{"lineNumber":120,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(success, new ImageView(duke)));","lastModifiedDate":"2023-09-20"},{"lineNumber":121,"author":{"gitId":"Sasmik23"},"content":" } catch (StorageException e) {","lastModifiedDate":"2023-09-20"},{"lineNumber":122,"author":{"gitId":"Sasmik23"},"content":" Label error \u003d new Label(e.getMessage());","lastModifiedDate":"2023-09-20"},{"lineNumber":123,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(error, new ImageView(duke)));","lastModifiedDate":"2023-09-20"},{"lineNumber":124,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":125,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":126,"author":{"gitId":"Sasmik23"},"content":" //Part 3. Add functionality to handle user input.","lastModifiedDate":"2023-09-08"},{"lineNumber":127,"author":{"gitId":"Sasmik23"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2023-09-08"},{"lineNumber":128,"author":{"gitId":"Sasmik23"},"content":" handleUserInput();","lastModifiedDate":"2023-09-08"},{"lineNumber":129,"author":{"gitId":"Sasmik23"},"content":" });","lastModifiedDate":"2023-09-08"},{"lineNumber":130,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":131,"author":{"gitId":"Sasmik23"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2023-09-08"},{"lineNumber":132,"author":{"gitId":"Sasmik23"},"content":" handleUserInput();","lastModifiedDate":"2023-09-08"},{"lineNumber":133,"author":{"gitId":"Sasmik23"},"content":" });","lastModifiedDate":"2023-09-08"},{"lineNumber":134,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":135,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2023-09-08"},{"lineNumber":136,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":137,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":138,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":139,"author":{"gitId":"Sasmik23"},"content":" * Iteration 2:","lastModifiedDate":"2023-09-08"},{"lineNumber":140,"author":{"gitId":"Sasmik23"},"content":" * Creates two dialog boxes, one echoing user input and the other containing duke.ui.Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-08"},{"lineNumber":141,"author":{"gitId":"Sasmik23"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-08"},{"lineNumber":142,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":143,"author":{"gitId":"Sasmik23"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-08"},{"lineNumber":144,"author":{"gitId":"Sasmik23"},"content":" Label userText \u003d new Label(userInput.getText());","lastModifiedDate":"2023-09-26"},{"lineNumber":145,"author":{"gitId":"Sasmik23"},"content":" userText.setPadding(new Insets(5));","lastModifiedDate":"2023-09-20"},{"lineNumber":146,"author":{"gitId":"Sasmik23"},"content":" String dukeReplyStr \u003d getResponse(userInput.getText());","lastModifiedDate":"2023-09-20"},{"lineNumber":147,"author":{"gitId":"Sasmik23"},"content":" //If user types \"bye\", programme will quit","lastModifiedDate":"2023-09-20"},{"lineNumber":148,"author":{"gitId":"Sasmik23"},"content":" if (dukeReplyStr.equals(\"exit app\")) {","lastModifiedDate":"2023-09-20"},{"lineNumber":149,"author":{"gitId":"Sasmik23"},"content":" Label end \u003d new Label(Ui.endingText());","lastModifiedDate":"2023-09-20"},{"lineNumber":150,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(end, new ImageView(duke)));","lastModifiedDate":"2023-09-20"},{"lineNumber":151,"author":{"gitId":"Sasmik23"},"content":" Platform.exit();","lastModifiedDate":"2023-09-20"},{"lineNumber":152,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":153,"author":{"gitId":"Sasmik23"},"content":" Label dukeText \u003d new Label(dukeReplyStr);","lastModifiedDate":"2023-09-20"},{"lineNumber":154,"author":{"gitId":"Sasmik23"},"content":" dukeText.setPadding(new Insets(5));","lastModifiedDate":"2023-09-20"},{"lineNumber":155,"author":{"gitId":"Sasmik23"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-08"},{"lineNumber":156,"author":{"gitId":"Sasmik23"},"content":" DialogBox.getUserDialog(userText, new ImageView(user)),","lastModifiedDate":"2023-09-08"},{"lineNumber":157,"author":{"gitId":"Sasmik23"},"content":" DialogBox.getDukeDialog(dukeText, new ImageView(duke))","lastModifiedDate":"2023-09-08"},{"lineNumber":158,"author":{"gitId":"Sasmik23"},"content":" );","lastModifiedDate":"2023-09-08"},{"lineNumber":159,"author":{"gitId":"Sasmik23"},"content":" userInput.clear();","lastModifiedDate":"2023-09-08"},{"lineNumber":160,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":161,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":162,"author":{"gitId":"Sasmik23"},"content":" /**","lastModifiedDate":"2023-09-08"},{"lineNumber":163,"author":{"gitId":"Sasmik23"},"content":" * Sends user input to parser file","lastModifiedDate":"2023-09-20"},{"lineNumber":164,"author":{"gitId":"Sasmik23"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":165,"author":{"gitId":"Sasmik23"},"content":" * @param input","lastModifiedDate":"2023-09-20"},{"lineNumber":166,"author":{"gitId":"Sasmik23"},"content":" * @return parsed String","lastModifiedDate":"2023-09-20"},{"lineNumber":167,"author":{"gitId":"Sasmik23"},"content":" */","lastModifiedDate":"2023-09-08"},{"lineNumber":168,"author":{"gitId":"Sasmik23"},"content":" private String getResponse(String input) {","lastModifiedDate":"2023-09-08"},{"lineNumber":169,"author":{"gitId":"Sasmik23"},"content":" return parser.parse(input, true);","lastModifiedDate":"2023-09-20"},{"lineNumber":170,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":171,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"Sasmik23":171}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":" public static String greetingText() {","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":" String ret \u003d \"\";","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Welcome to Samantha\u0027s chatBot!\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"You may add tasks in the following format:\\n\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Todo {description}\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Deadline {description} /by {DD/MM/YYYY HHMM}\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":" ret +\u003d \"Event {description} /from {DD/MM/YYYY HHMM} /to {DD/MM/YYYY HHMM}\\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":" return ret;","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":" public static String endingText() {","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":" return \"See you soon\";","lastModifiedDate":"2023-09-20"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Sasmik23":17}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"import duke.parsers.InputParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"import org.junit.jupiter.api.MethodOrderer;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"import org.junit.jupiter.api.Order;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"import org.junit.jupiter.api.TestMethodOrder;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"Sasmik23"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"Sasmik23"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"Sasmik23"},"content":"@TestMethodOrder(MethodOrderer.OrderAnnotation.class)","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"Sasmik23"},"content":"public class DukeTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"Sasmik23"},"content":" private InputParser parser \u003d new InputParser(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"Sasmik23"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"Sasmik23"},"content":" @Order(1)","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"Sasmik23"},"content":" public void todoTest() {","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"Sasmik23"},"content":" String actual \u003d parser.parse(\"todo gym\", false);","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"Sasmik23"},"content":" String expected \u003d \"Got it. I\u0027ve added this task:\" + \"\\n\" + \" [T][ ] gym #no tag\" + \"\\n\" + \"Now you have 1 tasks in the list.\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"Sasmik23"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"Sasmik23"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"Sasmik23"},"content":" @Order(2)","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"Sasmik23"},"content":" public void deadlineTest() {","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"Sasmik23"},"content":" String actual \u003d parser.parse(\"deadline assignment /by 02/05/2024 1900\", false);","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"Sasmik23"},"content":" String expected \u003d \"Got it. I\u0027ve added this task:\" + \"\\n\" + \" [D][ ] assignment (by: 02 May 2024 7 PM) #no tag\" + \"\\n\" + \"Now you have 2 tasks in the list.\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"Sasmik23"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"Sasmik23"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"Sasmik23"},"content":" @Test","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"Sasmik23"},"content":" @Order(3)","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"Sasmik23"},"content":" public void eventTest() {","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"Sasmik23"},"content":" String actual \u003d parser.parse(\"event soc fair /from 10/05/2023 1000 /to 11/05/2023 1000\", false);","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"Sasmik23"},"content":" String expected \u003d \"Got it. I\u0027ve added this task:\" + \"\\n\" +","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"Sasmik23"},"content":" \" [E][ ] soc fair (from: 10 May 2023 10 AM to: 11 May 2023 10 AM) #no tag\" +","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"Sasmik23"},"content":" \"\\n\" + \"Now you have 3 tasks in the list.\\n\";","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"Sasmik23"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-08"},{"lineNumber":42,"author":{"gitId":"Sasmik23"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"Sasmik23"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"Sasmik23":43}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Sasmik23"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Sasmik23"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Sasmik23"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Sasmik23"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Sasmik23"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Sasmik23"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Sasmik23"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Sasmik23":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":"Sasmik23"},"content":"java -classpath ..\\bin duke.duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Sasmik23":1,"-":20}}] diff --git a/Sasmik23_ip_master/commits.json b/Sasmik23_ip_master/commits.json index a2304e94..d9b3b961 100644 --- a/Sasmik23_ip_master/commits.json +++ b/Sasmik23_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Sasmik23":[{"date":"2023-08-22","commitResults":[{"hash":"0a17f56a8032bd9e7e05377579bffdb0da0e91b9","isMergeCommit":false,"messageTitle":"Level0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"017bd11ca0542609defddc34257ab3b71a83c3bd","isMergeCommit":false,"messageTitle":"Level1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"ec70cf1a791561ec15700b932154bae5fce3d113","isMergeCommit":false,"messageTitle":"Level2 - add,list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}}]},{"date":"2023-08-23","commitResults":[{"hash":"50c41c1bfff0eb9c9306d12616eccfb215f77532","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":5}}},{"hash":"4da026b6f5e6b45c90f593d32f7112a286cd76c4","isMergeCommit":false,"messageTitle":"Level 4 - todos, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":20}}},{"hash":"800fba7e45a24eae2c8866bc4131d2be4ae14059","isMergeCommit":false,"messageTitle":"A-TextUITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":6,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"71e0509b75b2ba41267aac3221dd13d290a83af7","isMergeCommit":false,"messageTitle":"level-5 error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":12}}},{"hash":"55f0c3d32abc2dc6fb638e8e3956a1742407fa66","isMergeCommit":false,"messageTitle":"level-6 delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":12}}},{"hash":"5099a6bc728a15c0de139a8864367d45f84a063e","isMergeCommit":false,"messageTitle":"added comments and javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":4}}}]},{"date":"2023-08-29","commitResults":[{"hash":"e1fbfdc2bffced829936c1f03d7e5b877b5632ee","isMergeCommit":false,"messageTitle":"level-7: save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"3784d3f76299d479f4741bfef0fa3da8c924a313","isMergeCommit":false,"messageTitle":"level 8: date","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":22}}}]},{"date":"2023-08-31","commitResults":[{"hash":"502351496a4212a520e5fdd951086d99af53303d","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":182,"deletions":139}}},{"hash":"f943cf70721a7c9073a8509d2fd73bad2c87af8e","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":9}}},{"hash":"939f26554a3d6d0488ffb9b2cd3d54a202f3b232","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/Sasmik23/ip into gradle","messageBody":"* \u0027add-gradle-support\u0027 of https://github.com/Sasmik23/ip:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"f6ec017de5f201ad95fb2f1c62d4da129ac55226","isMergeCommit":false,"messageTitle":"A-packages update and A-gradle update","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":36,"deletions":36},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"d1fcfe764b1962d4422e1f81fe258fca9b28ba50","isMergeCommit":false,"messageTitle":"A-graddle run added","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":18,"deletions":6}}}]},{"date":"2023-09-01","commitResults":[{"hash":"f9085727e604663e0b7451a87958d31984b90c40","isMergeCommit":false,"messageTitle":"A-Junit todoTest","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":0},"java":{"insertions":140,"deletions":96}}},{"hash":"a72a37515ab2daa520bace4a7a6073bbdc79db53","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":85},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"de97faaab06ba7459b5dcdd4dbf469cab74efc3c","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":3}}},{"hash":"08f615759a6e50f332ab3603790a521090b291d9","isMergeCommit":false,"messageTitle":"level 9 find","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"bbcbe9ebbcf4fd7ebe545275672add0f5a2aafbf","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4c0b8868103e4bb97f04e5ee5e09c4d000fcd1ac","isMergeCommit":true,"messageTitle":"resolved merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3fe722b583a4144c52c2ebf0e3dce295daf5e3fb","isMergeCommit":false,"messageTitle":"A-Jar update\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-07","commitResults":[{"hash":"f6a1b28fedfed7767be34f3f71be3509585c4081","isMergeCommit":false,"messageTitle":"testing javafx","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"java":{"insertions":35,"deletions":1}}}]},{"date":"2023-09-08","commitResults":[{"hash":"75850fb36172e588c00d593e060cfb0204e42517","isMergeCommit":false,"messageTitle":"Level-10 GUI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":292,"deletions":119}}}]},{"date":"2023-09-17","commitResults":[{"hash":"ac667a7785e05d2c4f2d3f2813909a213432ff5e","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"To help with readability\n\nAdhere to code quality guidelines (ie. spacing)\n\nStandardise with everyone else\n","tags":["A-FullCommitMessage","A-CodeQuality","A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":116,"deletions":123},"md":{"insertions":2,"deletions":2}}},{"hash":"3aa1769204ebce4f93da07d485f27ca0aab055a5","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Sasmik23/branch-A-CodeQuality","messageBody":"Improve code quality","fileTypesAndContributionMap":{}}]},{"date":"2023-09-18","commitResults":[{"hash":"e030f95f388b8c185112e060376a593f77017e02","isMergeCommit":false,"messageTitle":"C-Tagging","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}}]},{"date":"2023-09-20","commitResults":[{"hash":"20d5ed431bfc7ad785999a9ff90efcf53ae34573","isMergeCommit":false,"messageTitle":"Update UI","messageBody":"Added welcome and ending messages, added padding to text and changed window sizing\nAdded new StorageException Class\n","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":78}}}]},{"date":"2023-09-22","commitResults":[{"hash":"752d0aefb3774dbce37ead1f04de9b574fa7161e","isMergeCommit":false,"messageTitle":"updated readme, yet to add screenshot","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0},"md":{"insertions":83,"deletions":16}}}]},{"date":"2023-09-25","commitResults":[{"hash":"8647f734f538ebadc24377d5e37ac177f9b1af1e","isMergeCommit":false,"messageTitle":"Added screenshot of UI and fixed bug in displaying tags","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}},{"hash":"91333d6c755be5795eeb9ccac02b15ae7fea3e0d","isMergeCommit":false,"messageTitle":"update readme","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":3,"deletions":5}}},{"hash":"3943cbf41155722351ce78bcf3635cf41c944935","isMergeCommit":false,"messageTitle":"change jar file name","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"md":{"insertions":15,"deletions":10}}},{"hash":"36250303b0a84b2bbc83cc5c46901a2cfd0a0cba","isMergeCommit":false,"messageTitle":"fix bug in displaying size","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"211a637f2ca31ed6d397fa6dbf486ae86f4139ab","isMergeCommit":false,"messageTitle":"- saving tasks creates new directory - fixed bug in todo file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":7}}},{"hash":"876672a657f32c56b2a90176d2efd2c66651c7da","isMergeCommit":false,"messageTitle":"- stores data only when user exits programme - added 2 more junit tests","messageBody":"","tags":["V1.3","A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":27}}}]}]},"authorFileTypeContributionMap":{"Sasmik23":{"java":810,"md":79,"fxml":0,"sh":0,"bat":1,"gradle":19,"txt":7}},"authorContributionVariance":{"Sasmik23":15990.923},"authorDisplayNameMap":{"Sasmik23":"CS2103T-W13-3 MIKH..NAND"}} +{"authorDailyContributionsMap":{"Sasmik23":[{"date":"2023-08-22","commitResults":[{"hash":"0a17f56a8032bd9e7e05377579bffdb0da0e91b9","isMergeCommit":false,"messageTitle":"Level0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"017bd11ca0542609defddc34257ab3b71a83c3bd","isMergeCommit":false,"messageTitle":"Level1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"ec70cf1a791561ec15700b932154bae5fce3d113","isMergeCommit":false,"messageTitle":"Level2 - add,list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}}]},{"date":"2023-08-23","commitResults":[{"hash":"50c41c1bfff0eb9c9306d12616eccfb215f77532","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":5}}},{"hash":"4da026b6f5e6b45c90f593d32f7112a286cd76c4","isMergeCommit":false,"messageTitle":"Level 4 - todos, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":20}}},{"hash":"800fba7e45a24eae2c8866bc4131d2be4ae14059","isMergeCommit":false,"messageTitle":"A-TextUITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":6,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"71e0509b75b2ba41267aac3221dd13d290a83af7","isMergeCommit":false,"messageTitle":"level-5 error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":12}}},{"hash":"55f0c3d32abc2dc6fb638e8e3956a1742407fa66","isMergeCommit":false,"messageTitle":"level-6 delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":12}}},{"hash":"5099a6bc728a15c0de139a8864367d45f84a063e","isMergeCommit":false,"messageTitle":"added comments and javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":4}}}]},{"date":"2023-08-29","commitResults":[{"hash":"e1fbfdc2bffced829936c1f03d7e5b877b5632ee","isMergeCommit":false,"messageTitle":"level-7: save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"3784d3f76299d479f4741bfef0fa3da8c924a313","isMergeCommit":false,"messageTitle":"level 8: date","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":22}}}]},{"date":"2023-08-31","commitResults":[{"hash":"502351496a4212a520e5fdd951086d99af53303d","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":182,"deletions":139}}},{"hash":"f943cf70721a7c9073a8509d2fd73bad2c87af8e","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":9}}},{"hash":"939f26554a3d6d0488ffb9b2cd3d54a202f3b232","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/Sasmik23/ip into gradle","messageBody":"* \u0027add-gradle-support\u0027 of https://github.com/Sasmik23/ip:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"f6ec017de5f201ad95fb2f1c62d4da129ac55226","isMergeCommit":false,"messageTitle":"A-packages update and A-gradle update","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":36,"deletions":36},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"d1fcfe764b1962d4422e1f81fe258fca9b28ba50","isMergeCommit":false,"messageTitle":"A-graddle run added","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":18,"deletions":6}}}]},{"date":"2023-09-01","commitResults":[{"hash":"f9085727e604663e0b7451a87958d31984b90c40","isMergeCommit":false,"messageTitle":"A-Junit todoTest","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":0},"java":{"insertions":140,"deletions":96}}},{"hash":"a72a37515ab2daa520bace4a7a6073bbdc79db53","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":85},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"de97faaab06ba7459b5dcdd4dbf469cab74efc3c","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":3}}},{"hash":"08f615759a6e50f332ab3603790a521090b291d9","isMergeCommit":false,"messageTitle":"level 9 find","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"bbcbe9ebbcf4fd7ebe545275672add0f5a2aafbf","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4c0b8868103e4bb97f04e5ee5e09c4d000fcd1ac","isMergeCommit":true,"messageTitle":"resolved merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3fe722b583a4144c52c2ebf0e3dce295daf5e3fb","isMergeCommit":false,"messageTitle":"A-Jar update\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-07","commitResults":[{"hash":"f6a1b28fedfed7767be34f3f71be3509585c4081","isMergeCommit":false,"messageTitle":"testing javafx","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"java":{"insertions":35,"deletions":1}}}]},{"date":"2023-09-08","commitResults":[{"hash":"75850fb36172e588c00d593e060cfb0204e42517","isMergeCommit":false,"messageTitle":"Level-10 GUI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":292,"deletions":119}}}]},{"date":"2023-09-17","commitResults":[{"hash":"ac667a7785e05d2c4f2d3f2813909a213432ff5e","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"To help with readability\n\nAdhere to code quality guidelines (ie. spacing)\n\nStandardise with everyone else\n","tags":["A-FullCommitMessage","A-CodeQuality","A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":116,"deletions":123},"md":{"insertions":2,"deletions":2}}},{"hash":"3aa1769204ebce4f93da07d485f27ca0aab055a5","isMergeCommit":true,"messageTitle":"Merge pull request #2 from Sasmik23/branch-A-CodeQuality","messageBody":"Improve code quality","fileTypesAndContributionMap":{}}]},{"date":"2023-09-18","commitResults":[{"hash":"e030f95f388b8c185112e060376a593f77017e02","isMergeCommit":false,"messageTitle":"C-Tagging","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}}]},{"date":"2023-09-20","commitResults":[{"hash":"20d5ed431bfc7ad785999a9ff90efcf53ae34573","isMergeCommit":false,"messageTitle":"Update UI","messageBody":"Added welcome and ending messages, added padding to text and changed window sizing\nAdded new StorageException Class\n","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":78}}}]},{"date":"2023-09-22","commitResults":[{"hash":"752d0aefb3774dbce37ead1f04de9b574fa7161e","isMergeCommit":false,"messageTitle":"updated readme, yet to add screenshot","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0},"md":{"insertions":83,"deletions":16}}}]},{"date":"2023-09-25","commitResults":[{"hash":"8647f734f538ebadc24377d5e37ac177f9b1af1e","isMergeCommit":false,"messageTitle":"Added screenshot of UI and fixed bug in displaying tags","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}},{"hash":"91333d6c755be5795eeb9ccac02b15ae7fea3e0d","isMergeCommit":false,"messageTitle":"update readme","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":3,"deletions":5}}},{"hash":"3943cbf41155722351ce78bcf3635cf41c944935","isMergeCommit":false,"messageTitle":"change jar file name","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"md":{"insertions":15,"deletions":10}}},{"hash":"36250303b0a84b2bbc83cc5c46901a2cfd0a0cba","isMergeCommit":false,"messageTitle":"fix bug in displaying size","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"211a637f2ca31ed6d397fa6dbf486ae86f4139ab","isMergeCommit":false,"messageTitle":"- saving tasks creates new directory - fixed bug in todo file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":7}}},{"hash":"876672a657f32c56b2a90176d2efd2c66651c7da","isMergeCommit":false,"messageTitle":"- stores data only when user exits programme - added 2 more junit tests","messageBody":"","tags":["V1.3","A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":27}}}]},{"date":"2023-09-26","commitResults":[{"hash":"31de4f144c6004faee9e8b7441047b5dfbe44ed9","isMergeCommit":false,"messageTitle":"changed pictures to comply with copyright issues","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"Sasmik23":{"java":810,"md":79,"fxml":0,"sh":0,"bat":1,"gradle":19,"txt":7}},"authorContributionVariance":{"Sasmik23":15684.85},"authorDisplayNameMap":{"Sasmik23":"CS2103T-W13-3 MIKH..NAND"}} diff --git a/TohLiYuan_ip_master/authorship.json b/TohLiYuan_ip_master/authorship.json index 79d22a41..69ec1ece 100644 --- a/TohLiYuan_ip_master/authorship.json +++ b/TohLiYuan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-09"},{"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":"TohLiYuan"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-09"},{"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":{"TohLiYuan":2,"-":22}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.0.13\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"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":"TohLiYuan"},"content":" mainClass.set(\"Duke\")","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":"javafx {","lastModifiedDate":"2023-09-08"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" version \u003d \"17.0.7\"","lastModifiedDate":"2023-09-08"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" modules \u003d [ \u0027javafx.controls\u0027, \u0027javafx.fxml\u0027 ]","lastModifiedDate":"2023-09-08"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-08"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":"mainClassName \u003d \u0027Launcher\u0027","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"TohLiYuan":15,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"# KnowledgeYuan","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"### Tasks","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"Categorizes Tasks into 3 categories:","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"1. Todo","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" - A short task to be done","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"2. Deadline","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" - A Task to be done before a given date","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"3. Event","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" - A Task to be done throughout a given period of time","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"### Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"Stores a list of your tasks.","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"A user can add, remove, and mark a task as done/undone with the user of commands.","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"### Reminder","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"Reminds you of the most urgent tasks to be completed.","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"A user can also see what needs to be done in the next few days with a command.","lastModifiedDate":"2023-09-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":"### `todo` - Add a new Todo Task","lastModifiedDate":"2023-09-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"Adds a new Todo Task to the Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Example of usage: ","lastModifiedDate":"2023-09-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":"`todo [name]`","lastModifiedDate":"2023-09-15"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":"A new Todo Task will be added to your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"### `deadline` - Add a new Deadline Task","lastModifiedDate":"2023-09-15"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":"Adds a new Deadline Task to the Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":"`Deadline [name] /by [time]`","lastModifiedDate":"2023-09-15"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":"*The time should be in `D/M/YYYY HHmm` format*","lastModifiedDate":"2023-09-15"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"A new Deadline Task will be added to your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":"### `event` - Add a new Event Task","lastModifiedDate":"2023-09-15"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":"Adds a new Event Task to the Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":"`event [name] /from [time] /to [time]`","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":"*The time should be in `D/M/YYYY HHmm` format*","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":"A new Event Task will be added to your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":"### `list` - List all Tasks","lastModifiedDate":"2023-09-15"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":"List all Tasks in your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":72,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":73,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":74,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":75,"author":{"gitId":"TohLiYuan"},"content":"`list`","lastModifiedDate":"2023-09-15"},{"lineNumber":76,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":77,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":78,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":79,"author":{"gitId":"TohLiYuan"},"content":"A list of Tasks currently in your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":80,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":81,"author":{"gitId":"TohLiYuan"},"content":"### `delete` - Delete a Task","lastModifiedDate":"2023-09-15"},{"lineNumber":82,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":83,"author":{"gitId":"TohLiYuan"},"content":"Deletes the specified Task from your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":84,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":85,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":86,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":87,"author":{"gitId":"TohLiYuan"},"content":"`delete [index]`","lastModifiedDate":"2023-09-15"},{"lineNumber":88,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":89,"author":{"gitId":"TohLiYuan"},"content":"*[index] is the number of the Task as shown in the Task List*","lastModifiedDate":"2023-09-15"},{"lineNumber":90,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":91,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":92,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":93,"author":{"gitId":"TohLiYuan"},"content":"The Task will be removed from your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":94,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":95,"author":{"gitId":"TohLiYuan"},"content":"### `mark` - Marks a Task as done","lastModifiedDate":"2023-09-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":97,"author":{"gitId":"TohLiYuan"},"content":"Marks the specified Task as done","lastModifiedDate":"2023-09-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":101,"author":{"gitId":"TohLiYuan"},"content":"`mark [index]`","lastModifiedDate":"2023-09-15"},{"lineNumber":102,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":103,"author":{"gitId":"TohLiYuan"},"content":"*[index] is the number of the Task as shown in the Task List*","lastModifiedDate":"2023-09-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":107,"author":{"gitId":"TohLiYuan"},"content":"The marked task should now have a \"tick\" sign in the status","lastModifiedDate":"2023-09-15"},{"lineNumber":108,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":109,"author":{"gitId":"TohLiYuan"},"content":"### `unmark` - Marks a Task as not done","lastModifiedDate":"2023-09-15"},{"lineNumber":110,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":111,"author":{"gitId":"TohLiYuan"},"content":"Marks the specified Task as not done","lastModifiedDate":"2023-09-15"},{"lineNumber":112,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":113,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":114,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":115,"author":{"gitId":"TohLiYuan"},"content":"`unmark [index]`","lastModifiedDate":"2023-09-15"},{"lineNumber":116,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":117,"author":{"gitId":"TohLiYuan"},"content":"*[index] is the number of the Task as shown in the Task List*","lastModifiedDate":"2023-09-15"},{"lineNumber":118,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":119,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":120,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":121,"author":{"gitId":"TohLiYuan"},"content":"The marked task should no longer have a \"tick\" sign in the status","lastModifiedDate":"2023-09-15"},{"lineNumber":122,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":123,"author":{"gitId":"TohLiYuan"},"content":"### `find` - Finds Tasks in the Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":124,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":125,"author":{"gitId":"TohLiYuan"},"content":"Finds all Tasks in the Task List that has the specified keyword","lastModifiedDate":"2023-09-15"},{"lineNumber":126,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":127,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":128,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":129,"author":{"gitId":"TohLiYuan"},"content":"`find [keyword]`","lastModifiedDate":"2023-09-15"},{"lineNumber":130,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":131,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":132,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":133,"author":{"gitId":"TohLiYuan"},"content":"A list of Task with the keyword in their name","lastModifiedDate":"2023-09-15"},{"lineNumber":134,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":135,"author":{"gitId":"TohLiYuan"},"content":"### `remind` - Reminds you of urgent Tasks","lastModifiedDate":"2023-09-15"},{"lineNumber":136,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":137,"author":{"gitId":"TohLiYuan"},"content":"Tells you the urgent Tasks that should be completed in a specified time","lastModifiedDate":"2023-09-15"},{"lineNumber":138,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":139,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":140,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":141,"author":{"gitId":"TohLiYuan"},"content":"`remind (number of days)`","lastModifiedDate":"2023-09-15"},{"lineNumber":142,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":143,"author":{"gitId":"TohLiYuan"},"content":"*(number of days) represents the number of days you want to seek ahead* ","lastModifiedDate":"2023-09-15"},{"lineNumber":144,"author":{"gitId":"TohLiYuan"},"content":"*By default it looks for tasks 7 days in advance*","lastModifiedDate":"2023-09-15"},{"lineNumber":145,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":146,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":147,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":148,"author":{"gitId":"TohLiYuan"},"content":"A list of task that you should complete within the next n days","lastModifiedDate":"2023-09-15"},{"lineNumber":149,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":150,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":151,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":152,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":153,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":154,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":155,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":156,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"TohLiYuan":136,"-":21}},{"path":"src/main/java/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" * The launcher entry point for duke GUI.","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"public class Launcher {","lastModifiedDate":"2023-09-08"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"TohLiYuan":10}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.ui.MainWindow;","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" * The main entry class to launch the duke GUI.","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Duke.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" stage.setTitle(\"KnowledgeYuan\");","lastModifiedDate":"2023-09-15"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" stage.show();","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" public void stop() {","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" Thread.sleep(1000);","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" } catch (InterruptedException e) {","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"TohLiYuan":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.ByeCommand;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.CommandParser;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"public class Duke {","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private static final String INIT_PHRASE \u003d \"KnowledgeYuan, at your service!\\nWhat can I do for you today?\";","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private static final String REMINDER_PHRASE \u003d","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" \"The following tasks are urgent! Please remove them from the list after completing!\";","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" private boolean isEnd \u003d false;","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" private CommandParser cp;","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" private ChatRecord chatRecord;","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * Initialises the Duke program.","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" * @return the greeting string.","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" public String init() {","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" cp \u003d new CommandParser();","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" chatRecord \u003d new ChatRecord();","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" chatRecord.loadData();","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" String reminders \u003d chatRecord.getReminder(LocalDate.now(), 1);","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" if (reminders.length() \u003e\u003d 1) {","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" return INIT_PHRASE + \"\\n\" + REMINDER_PHRASE + \"\\n\" + reminders;","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" return INIT_PHRASE;","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-09"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" * Returns a response from Duke from a given input.","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-09"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" * @param input the user input.","lastModifiedDate":"2023-09-09"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" * @return the response from duke.","lastModifiedDate":"2023-09-09"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-09"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand((input));","lastModifiedDate":"2023-09-09"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" if (ByeCommand.isBye(cmd)) {","lastModifiedDate":"2023-09-09"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" isEnd \u003d true;","lastModifiedDate":"2023-09-09"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" cmd.init(chatRecord);","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" String out \u003d cmd.execute();","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" assert out !\u003d null;","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" return out;","lastModifiedDate":"2023-09-09"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" public boolean isTerminate() {","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" return isEnd;","lastModifiedDate":"2023-09-09"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"TohLiYuan":58}},{"path":"src/main/java/duke/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * The command to exit the program.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"bye\";","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" private static final String BYE_PHRASE \u003d \"Access Terminated! Hope to see you again soon!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public ByeCommand() { }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) { }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Bye Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @return The bye phrase to be displayed as feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" return BYE_PHRASE;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" public static boolean isBye(Command command) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" return command instanceof ByeCommand;","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":29}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * The abstract class for commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" protected ChatRecord chatRecord;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public abstract void init(ChatRecord chatRecord);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public abstract String execute();","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":13}},{"path":"src/main/java/duke/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" * The command to create a Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"deadline\";","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"New Deadline Task added to list!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" private String name;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to add Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" * @param date the date of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public DeadlineCommand(String name, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Deadline Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" * A new Deadline Task will be added to the records.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" * @return The string to be displayed as feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" Deadline ddl \u003d new Deadline(name, date);","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord.addTask(ddl);","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + ddl.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + name + \" /by \" + date.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":55}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.InvalidTaskException;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * The command to delete a Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"delete\";","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"The following task has been deleted: \";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private int toDelete;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public DeleteCommand(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" this.toDelete \u003d i;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Delete Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" * The selected Task will be deleted from the record.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" * @return The string representation of the Task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" assert toDelete \u003c this.chatRecord.getCount();","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d this.chatRecord.deleteTask(toDelete);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + toDelete;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":46}},{"path":"src/main/java/duke/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" * The command to add an Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"event\";","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"New Event Task added to list!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" private String name;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to add an Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" * @param startDate the starting date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" * @param endDate the ending date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" public EventCommand(String name, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Event Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" * A new Event Task will be added to the records.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" * @return The string to be displayed as feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" Event ev \u003d new Event(name, startDate, endDate);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord.addTask(ev);","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + ev.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + name + \" /from \"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" + startDate.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" + \" /to \" + endDate.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":58}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * The command to find tasks with the given keyword","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"find\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"These are the tasks with the matching keyword:\";","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private static final String NO_RESULT \u003d \"You have no tasks in the list with the matching keyword!\";","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private String findWord;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" private ChatRecord records;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" public FindCommand(String findWord) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.findWord \u003d findWord;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" this.records \u003d records;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cString\u003e res \u003d records.findMessage(findWord);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" if (res.isPresent()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \"\\n\" + res.get();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" return NO_RESULT;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + findWord;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"TohLiYuan":39}},{"path":"src/main/java/duke/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * A placeholder command for invalid commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" private String prefix \u003d \"Invalid Command! \";","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" private String errMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command for invalid commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * @param errMessage the error message to show to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" public InvalidCommand(String errMessage) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" this.errMessage \u003d errMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) { }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Invalid Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" * @return The error string to be displayed as feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" return prefix + errMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" return prefix + errMessage;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":39}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * The command to list all recorded tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"list\";","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public ListCommand() {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created List Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * @return The list of task to be displayed to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" return \"You have \" + chatRecord.getCount() + \" tasks in your list!\\n\" + chatRecord.listMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":28}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * The command to mark a task as complete.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"mark\";","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"Marked the following task as completed!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private int toMark;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to mark a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @param i the task number of the task to be marked in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public MarkCommand(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" this.toMark \u003d i;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Mark Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * @return The string representation of task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecord.setMark(toMark);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \"\\n\" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + toMark;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":45}},{"path":"src/main/java/duke/commands/RemindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * The command to list all urgent tasks within a time period.","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"public class RemindCommand extends Command {","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"remind\";","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private LocalDate currDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private int days;","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to display reminder to the user.","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * @param days The number of days to seek for urgent tasks.","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public RemindCommand(int days) {","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" this.currDate \u003d LocalDate.now();","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" this.days \u003d days;","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Remind Command.","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" * @return The reminder list to be displayed to the user.","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" String reminders \u003d this.chatRecord.getReminder(currDate, days);","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" if (reminders.length() \u003c 1) {","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" return \"You have no urgent tasks!\";","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"These are the tasks you need to finish by next %d day(s):\\n%s\", this.days, reminders);","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"TohLiYuan":46}},{"path":"src/main/java/duke/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * The command to add a Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"todo\";","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"New Todo Task added to list!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private String name;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to add a Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public TodoCommand(String name) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Todo Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * A new Todo Task will be added to the records.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" * @return The string to be displayed as feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" Todo td \u003d new Todo(this.name);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord.addTask(td);","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + td.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + name;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":49}},{"path":"src/main/java/duke/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * The command to unmark a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"unmark\";","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"Marked the following task as incomplete!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private int toUnmark;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to unmark a Task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @param i the task number of the task to be unmarked in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public UnmarkCommand(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" this.toUnmark \u003d i;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Unmark Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * @return The string representation of task to be unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecord.setUnmark(toUnmark);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \"\\n\" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + toUnmark;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":45}},{"path":"src/main/java/duke/parser/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.ByeCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.DeadlineCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.EventCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.FindCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.InvalidCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.RemindCommand;","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.TodoCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.UnmarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * Parses user input into command.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"public class CommandParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern COMMAND_PATTERN \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern TODO_ARGS_PATTERN \u003d Pattern.compile(\"(?\u003cname\u003e\\\\S.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern DEADLINE_ARGS_PATTERN \u003d Pattern.compile(\"(?\u003cname\u003e\\\\S+.*)( /by )(?\u003ctime\u003e\\\\S.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern EVENT_ARGS_PATTERN \u003d","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" Pattern.compile(\"(?\u003cname\u003e\\\\S+.*)( /from )(?\u003cstartTime\u003e\\\\S.*)( /to )(?\u003cendTime\u003e\\\\S.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" public CommandParser() { }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * Processes a user input to a command.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" * @param input the input string from the user","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" * @return the correct command from user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" * Returns an Invalid Command if a syntax error in the command is found.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" public Command parseCommand(String input) {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" Matcher matcher \u003d COMMAND_PATTERN.matcher(input);","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Invalid command format\");","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" String args \u003d matcher.group(\"arguments\");","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" switch (commandWord) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" case MarkCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" return new MarkCommand(Integer.parseInt(args.trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" case UnmarkCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" return new UnmarkCommand(Integer.parseInt(args.trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" case ListCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" case ByeCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" case FindCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" return new FindCommand(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" case DeleteCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" return new DeleteCommand(Integer.parseInt(args.trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" case TodoCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" Matcher tdMatcher \u003d TODO_ARGS_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" if (tdMatcher.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" return new TodoCommand(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Name cannot be empty!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" case EventCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" Matcher evMatcher \u003d EVENT_ARGS_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":" if (evMatcher.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":" return new EventCommand(evMatcher.group(\"name\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.parseTime(evMatcher.group(\"startTime\").trim()),","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.parseTime(evMatcher.group(\"endTime\").trim()));","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Bad event arguments!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"TohLiYuan"},"content":" case DeadlineCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"TohLiYuan"},"content":" Matcher ddlMatcher \u003d DEADLINE_ARGS_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"TohLiYuan"},"content":" if (ddlMatcher.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"TohLiYuan"},"content":" return new DeadlineCommand(ddlMatcher.group(\"name\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.parseTime(ddlMatcher.group(\"time\").trim()));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Bad deadline argument!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"TohLiYuan"},"content":" case RemindCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"TohLiYuan"},"content":" if (args.trim().length() \u003e 0) {","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"TohLiYuan"},"content":" int days \u003d Integer.parseInt(args.trim());","lastModifiedDate":"2023-09-12"},{"lineNumber":89,"author":{"gitId":"TohLiYuan"},"content":" return new RemindCommand(days);","lastModifiedDate":"2023-09-12"},{"lineNumber":90,"author":{"gitId":"TohLiYuan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-12"},{"lineNumber":91,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Please type in a valid number for your argument!\");","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"TohLiYuan"},"content":" return new RemindCommand(7);","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"TohLiYuan"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Command not found\");","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":100}},{"path":"src/main/java/duke/parser/TaskParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" * Parses Task into string and vice versa.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"public class TaskParser {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * Formats an array of Task for local storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @param tasks the array of Task to be stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * @return the formatted string to be stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public static String generateSaveString(Task[] tasks) {","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" ret.append(task.toSave());","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" ret.append(\"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" return ret.toString().trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * Parses a string of saved data into Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" * @param saveLine the string of saved data.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" * @return an Optional class containing the parsed Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" public static Optional\u003cTask\u003e parseSave(String saveLine) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" String[] splitArray \u003d saveLine.split(Task.DISCRIMINATOR.replaceAll(\"\\\\|\", \"\\\\\\\\|\"));","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e ret \u003d Optional.empty();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" switch (splitArray[0]) {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" case \"T\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Todo(splitArray[1], status));","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" case \"D\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Deadline(splitArray[1], status, TimeParser.parseTime(splitArray[3])));","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" case \"E\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" String[] timeDescriptor \u003d splitArray[3].split(\" to \");","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Event(splitArray[1], status, TimeParser.parseTime(timeDescriptor[0]),","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.parseTime(timeDescriptor[1])));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" default: {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" return ret;","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"TohLiYuan":65}},{"path":"src/main/java/duke/parser/TimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * Parses Java DateTime to string and vice versa.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"public class TimeParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" private static DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm:ss\");","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" * Parses a string of time into a Java DateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * @param timeString the input string.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @return the parsed DateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public static LocalDateTime parseTime(String timeString) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" return LocalDateTime.parse(timeString, inputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" * Parses a Java DateTime into plain text for display.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" * @param dateTime the Java DateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" * @return the formatted string.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" public static String returnTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" return dateTime.format(outputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" * Changes a Java DateTime to the predefined input format of a date string.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" * Used for local storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" * @param dateTime the Java DateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" * @return the formatted string.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" public static String toSaveString(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" return dateTime.format(inputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":46}},{"path":"src/main/java/duke/records/ChatRecord.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.records;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TaskParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.InvalidTaskException;","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" * Records all tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"public class ChatRecord {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" private ArrayList\u003cTask\u003e chatRecords;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" public ChatRecord() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" chatRecords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" * Loads the data from local storage to the current records instance.","lastModifiedDate":"2023-09-16"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" * @return the status of the import.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public String loadData() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" ArrayList\u003cTask\u003e temp \u003d SaveData.loadData();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" if (temp.size() \u003e\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" chatRecords \u003d temp;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" return \"Save loaded successfully!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" return \"No valid save found! Starting a new instance...\";","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" chatRecords.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" * Deletes a task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" * @param n the task number of the task in the records.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" * @return the removed task.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" public Task deleteTask(int n) throws InvalidTaskException {","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" if (n \u003e chatRecords.size()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" throw new InvalidTaskException(\"Task not found! Please specify a task available in the task list!\");","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" return chatRecords.remove(n - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" * Lists all tasks in the record.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" * @return the string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" public String listMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" for (int i \u003d 0; i \u003c chatRecords.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" ret.append(String.format(\"\\t%d. %s\\n\", i + 1, chatRecords.get(i).toString()));","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" return ret.toString().stripTrailing();","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" * Finds all tasks that contains the specified find word.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":" * @param findWord the word or phrase to find.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":" * @return an Optional of the string representation of all tasks with the specified find word.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"TohLiYuan"},"content":" public Optional\u003cString\u003e findMessage(String findWord) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"TohLiYuan"},"content":" for (Task task : chatRecords) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"TohLiYuan"},"content":" if (task.getName().contains(findWord)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"TohLiYuan"},"content":" ret.append(String.format(\"\\t%s\\n\", task));","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"TohLiYuan"},"content":" if (ret.length() \u003c\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"TohLiYuan"},"content":" return Optional.empty();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"TohLiYuan"},"content":" return Optional.of(ret.toString().stripTrailing());","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"TohLiYuan"},"content":" * Returns the string representation for the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"TohLiYuan"},"content":" * @return the string representation for the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"TohLiYuan"},"content":" assert chatRecords !\u003d null;","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"TohLiYuan"},"content":" Task[] temp \u003d new Task[chatRecords.size()];","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"TohLiYuan"},"content":" temp \u003d chatRecords.toArray(temp);","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"TohLiYuan"},"content":" return TaskParser.generateSaveString(temp);","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"TohLiYuan"},"content":" public int getCount() {","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"TohLiYuan"},"content":" return chatRecords.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"TohLiYuan"},"content":" public Task setMark(int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecords.get(n - 1).mark();","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"TohLiYuan"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"TohLiYuan"},"content":" public Task setUnmark(int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecords.get(n - 1).unmark();","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"TohLiYuan"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"TohLiYuan"},"content":" public String getReminder(LocalDate date, int days) {","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-09-12"},{"lineNumber":114,"author":{"gitId":"TohLiYuan"},"content":" int n \u003d 0;","lastModifiedDate":"2023-09-12"},{"lineNumber":115,"author":{"gitId":"TohLiYuan"},"content":" for (Task task : chatRecords) {","lastModifiedDate":"2023-09-12"},{"lineNumber":116,"author":{"gitId":"TohLiYuan"},"content":" n++;","lastModifiedDate":"2023-09-12"},{"lineNumber":117,"author":{"gitId":"TohLiYuan"},"content":" String temp \u003d task.getReminder(date, days);","lastModifiedDate":"2023-09-12"},{"lineNumber":118,"author":{"gitId":"TohLiYuan"},"content":" if (temp \u003d\u003d null) {","lastModifiedDate":"2023-09-12"},{"lineNumber":119,"author":{"gitId":"TohLiYuan"},"content":" continue;","lastModifiedDate":"2023-09-12"},{"lineNumber":120,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":121,"author":{"gitId":"TohLiYuan"},"content":" ret.append(String.format(\"%d. %s\\n\", n, temp));","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":123,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":124,"author":{"gitId":"TohLiYuan"},"content":" return ret.toString().stripTrailing();","lastModifiedDate":"2023-09-12"},{"lineNumber":125,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":126,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":126}},{"path":"src/main/java/duke/storage/SaveData.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TaskParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" * Handles saving and loading from local storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"public class SaveData {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" private static final String SAVE_FILE_LOCATION \u003d \"./SaveFile.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" * Saves the formatted data to local storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" * @param taskData the formatted string of the data to be saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" public static void saveData(String taskData) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" File f \u003d new File(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" if (f.createNewFile()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" FileWriter fw \u003d new FileWriter(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" fw.write(taskData);","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" if (f.delete()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" FileWriter fw \u003d new FileWriter(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" fw.write(taskData);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" throw new Exception(\"The file cannot be deleted!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(\"IO Error! \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" * Loads the data from the local storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" * @return An ArrayList of the loaded data. Returns an empty ArrayList if no stored data is found.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" public static ArrayList\u003cTask\u003e loadData() {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" File f \u003d new File(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e optionalTask \u003d TaskParser.parseSave(sc.nextLine());","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" if (optionalTask.isPresent()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" optionalTask.ifPresent(tasks::add);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" sc.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(\"No save file found! Starting base instance\");","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(\"IO Error! \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"TohLiYuan":71}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TimeParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * Represents a Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @param date the date of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public Deadline(String name, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-16"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.DEADLINE;","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * @param status the completion status of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * @param date the date of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public Deadline(String name, boolean status, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-09-16"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.DEADLINE;","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.isDone ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-09-16"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[D]%s %s (by: %s)\", statusMark, name, TimeParser.returnTime(date));","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"D%s%s%s%d%s%s\", DISCRIMINATOR, name, DISCRIMINATOR,","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" Boolean.compare(isDone, false), DISCRIMINATOR, TimeParser.toSaveString(date));","lastModifiedDate":"2023-09-16"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" public String getReminder(LocalDate currDate, int days) {","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" if (this.isDone) {","lastModifiedDate":"2023-09-16"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" if (this.date.getYear() !\u003d currDate.getYear()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" if (currDate.getDayOfYear() + days - this.date.getDayOfYear() \u003e\u003d 0) {","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" return this.toString();","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":69}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TimeParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * Represents an Event Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Event Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * @param startDate the starting date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" * @param endDate the ending date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" public Event(String name, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-16"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.EVENT;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Event Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" * @param status the completion status of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" * @param startDate the starting date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" * @param endDate the ending date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" public Event(String name, boolean status, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-09-16"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.EVENT;","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.isDone ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[E]%s %s (from: %s to: %s)\", statusMark, name,","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.returnTime(startDate), TimeParser.returnTime(endDate));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"E%s%s%s%d%s%s to %s\", DISCRIMINATOR, name, DISCRIMINATOR,","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" Boolean.compare(isDone, false), DISCRIMINATOR, TimeParser.toSaveString(startDate),","lastModifiedDate":"2023-09-16"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.toSaveString(endDate));","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" public String getReminder(LocalDate currDate, int days) {","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" if (this.isDone) {","lastModifiedDate":"2023-09-16"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" if (this.endDate.getYear() !\u003d currDate.getYear()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-12"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":" if (currDate.getDayOfYear() + days - this.endDate.getDayOfYear() \u003e\u003d 0) {","lastModifiedDate":"2023-09-12"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":" return this.toString();","lastModifiedDate":"2023-09-12"},{"lineNumber":72,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-12"},{"lineNumber":74,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":75}},{"path":"src/main/java/duke/task/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" * An exception for invalid tasks.","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" * Used when task operations are invalid.","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public class InvalidTaskException extends RuntimeException {","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" public InvalidTaskException(String message) {","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" super(message);","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"TohLiYuan":13}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * The abstract class for Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public static final String DISCRIMINATOR \u003d \" || \";","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" protected String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" protected boolean isDone;","lastModifiedDate":"2023-09-16"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" protected TaskTypes type;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * @return this Task that has been marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" public Task mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" return this;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" * @return this Task that has been marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" public Task unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-16"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" return this;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public String getName() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" return this.name;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.isDone ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-09-16"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"%s %s\", statusMark, name);","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" public abstract String toSave();","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" public abstract String getReminder(LocalDate currDate, int days);","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":48}},{"path":"src/main/java/duke/task/TaskTypes.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" * Contains all available Task Types.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public enum TaskTypes {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" TODO,","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" DEADLINE,","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" EVENT;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":11}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * Represents a Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-16"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.TODO;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" * @param status the completion status of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public Todo(String name, boolean status) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-09-16"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.TODO;","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.isDone ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-09-16"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[T]%s %s\", statusMark, name);","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"T%s%s%s%d\", DISCRIMINATOR, name, DISCRIMINATOR, Boolean.compare(this.isDone, false));","lastModifiedDate":"2023-09-16"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" public String getReminder(LocalDate currDate, int days) {","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":48}},{"path":"src/main/java/duke/ui/ChatView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" * Handles the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public class ChatView {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" private static final String LINE_BREAK \u003d \"____________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" public ChatView() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" * Starts the text UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public void startMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(String.format(\"%s\\nKnowledgeYuan, at your service!\\nWhat can I do for you today?\\n%s\",","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" LINE_BREAK, LINE_BREAK));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * Displays the stylised string result from actions to the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" * @param str the string to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" public void displayOutput(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(str));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" * Displays the basic string result from actions to the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * @param str the string to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public void displayBasic(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(str);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" private String beautifyString(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"\\t%s\\n%s\\n%s\", LINE_BREAK, str, LINE_BREAK).replace(\"\\n\", \"\\n\\t\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"TohLiYuan":43}},{"path":"src/main/java/duke/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.ui;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.paint.ImagePattern;","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.shape.Ellipse;","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * The dialog box controller class for duke GUI.","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * Displays the input from the player and response from duke.","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" private Label dialog;","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" private Ellipse imageClip;","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-09"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-09"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-09"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" imageClip.setFill(new ImagePattern(img));","lastModifiedDate":"2023-09-09"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" private void flip() {","lastModifiedDate":"2023-09-09"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" this.setAlignment(Pos.CENTER_LEFT);","lastModifiedDate":"2023-09-09"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-09"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" FXCollections.reverse(tmp);","lastModifiedDate":"2023-09-09"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" this.getChildren().setAll(tmp);","lastModifiedDate":"2023-09-09"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" public static DialogBox getUserDialog(String text, Image iv) {","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" return new DialogBox(text, iv);","lastModifiedDate":"2023-09-09"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" public static DialogBox getDukeDialog(String text, Image iv) {","lastModifiedDate":"2023-09-09"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" var db \u003d new DialogBox(text, iv);","lastModifiedDate":"2023-09-09"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" db.flip();","lastModifiedDate":"2023-09-09"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" return db;","lastModifiedDate":"2023-09-09"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"TohLiYuan":58}},{"path":"src/main/java/duke/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.ui;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" * The main display window for duke GUI.","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" private AnchorPane anchorPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" private TextField inputField;","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" private Duke duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" private final Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/image/DaUser.png\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" private final Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/image/DaDuke.png\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * Initialises the duke GUI.","lastModifiedDate":"2023-09-09"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" public void initialize() {","lastModifiedDate":"2023-09-09"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-09"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" anchorPane.widthProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" dialogContainer.setPrefWidth(newValue.doubleValue() - 12);","lastModifiedDate":"2023-09-09"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" });","lastModifiedDate":"2023-09-09"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-09"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" this.duke \u003d d;","lastModifiedDate":"2023-09-09"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" String welcomeMsg \u003d this.duke.init();","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" dialogContainer.getChildren().addAll(DialogBox.getDukeDialog(welcomeMsg, dukeImage));","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-09"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" String input \u003d inputField.getText();","lastModifiedDate":"2023-09-09"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" String response \u003d getResponse(input);","lastModifiedDate":"2023-09-09"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-09"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-09"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-09"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" );","lastModifiedDate":"2023-09-09"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" inputField.clear();","lastModifiedDate":"2023-09-09"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" if (duke.isTerminate()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" exitApp();","lastModifiedDate":"2023-09-09"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" private String getResponse(String input) {","lastModifiedDate":"2023-09-09"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" return duke.getResponse(input);","lastModifiedDate":"2023-09-09"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" private void exitApp() {","lastModifiedDate":"2023-09-09"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" Platform.exit();","lastModifiedDate":"2023-09-09"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"TohLiYuan":71}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.shape.Ellipse?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"\u003cfx:root alignment\u003d\"CENTER_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" \u003cLabel fx:id\u003d\"dialog\" alignment\u003d\"CENTER_RIGHT\" text\u003d\"Label\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" \u003cFont name\u003d\"SansSerif Regular\" size\u003d\"12.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" \u003c/font\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" \u003c/padding\u003e\u003c/Label\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" \u003cEllipse fx:id\u003d\"imageClip\" centerX\u003d\"50.0\" centerY\u003d\"50.0\" fill\u003d\"DODGERBLUE\" radiusX\u003d\"40.0\" radiusY\u003d\"50.0\" stroke\u003d\"BLACK\" strokeType\u003d\"INSIDE\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" \u003c/Ellipse\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"TohLiYuan":33}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"\u003cAnchorPane fx:id\u003d\"anchorPane\" maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.ui.MainWindow\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" \u003cTextField fx:id\u003d\"inputField\" layoutX\u003d\"5.0\" layoutY\u003d\"551.6666666666666\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"311.0\" promptText\u003d\"Type here\" AnchorPane.bottomAnchor\u003d\"7.0\" AnchorPane.leftAnchor\u003d\"5.0\" AnchorPane.rightAnchor\u003d\"77.0\"\u003e","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" \u003cFont name\u003d\"SansSerif Regular\" size\u003d\"18.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" \u003c/font\u003e\u003c/TextField\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"551.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"70.0\" text\u003d\"Send\" AnchorPane.bottomAnchor\u003d\"7.0\" AnchorPane.rightAnchor\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"545.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\" AnchorPane.bottomAnchor\u003d\"50.0\" AnchorPane.leftAnchor\u003d\"0.0\" AnchorPane.rightAnchor\u003d\"0.0\" AnchorPane.topAnchor\u003d\"0.0\"\u003e","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"545.0\" prefWidth\u003d\"388.0\" AnchorPane.bottomAnchor\u003d\"50.0\" AnchorPane.leftAnchor\u003d\"6.0\" AnchorPane.rightAnchor\u003d\"-.0\" AnchorPane.topAnchor\u003d\"0.0\" /\u003e","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"TohLiYuan":23}},{"path":"src/test/java/duke/parser/CommandParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"public class CommandParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" public void todoParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"todo test123 test456\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public void deadlineParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"deadline test123 test456 /by 3/8/2023 1200\";","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" public void eventParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"event test123 test456 /from 3/8/2023 1200 /to 5/8/2023 1200\";","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" public void invalidCommandTest() {","lastModifiedDate":"2023-09-15"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"test123 test456\";","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"Invalid Command! Command not found\", cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" public void invalidArgumentTest() {","lastModifiedDate":"2023-09-15"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"Invalid Command! Name cannot be empty!\", cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" public void complexParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"todo deadline event /from 8/2/2023 1200 /to 8/3/2023 1400 /to 6/5/2023\";","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" // Expected: Todo Command with deadline event... as its name","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"TohLiYuan":67}},{"path":"src/test/java/duke/parser/TaskParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-15"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"public class TaskParserTest {","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" public void todoSaveString() {","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" Todo td \u003d new Todo(\"Test\", true);","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" String parseOutput \u003d TaskParser.generateSaveString(new Task[]{td});","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" String expectedStr \u003d \"T || Test || 1\";","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(expectedStr, parseOutput);","lastModifiedDate":"2023-09-15"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" public void deadlineSaveString() {","lastModifiedDate":"2023-09-15"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" LocalDateTime date \u003d LocalDateTime.of(2023, 8, 19, 10, 00);","lastModifiedDate":"2023-09-15"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" Deadline ddl \u003d new Deadline(\"Test\", date);","lastModifiedDate":"2023-09-15"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" String parseOutput \u003d TaskParser.generateSaveString(new Task[]{ddl});","lastModifiedDate":"2023-09-15"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" String expectedStr \u003d \"D || Test || 0 || 19/8/2023 1000\";","lastModifiedDate":"2023-09-15"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(expectedStr, parseOutput);","lastModifiedDate":"2023-09-15"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public void eventSaveString() {","lastModifiedDate":"2023-09-15"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" LocalDateTime startDate \u003d LocalDateTime.of(2023, 8, 19, 10, 00);","lastModifiedDate":"2023-09-15"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" LocalDateTime endDate \u003d LocalDateTime.of(2023, 8, 20, 22, 30);","lastModifiedDate":"2023-09-15"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" Event evt \u003d new Event(\"Test\", true, startDate, endDate);","lastModifiedDate":"2023-09-15"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" String parseOutput \u003d TaskParser.generateSaveString(new Task[]{evt});","lastModifiedDate":"2023-09-15"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" String expectedStr \u003d \"E || Test || 1 || 19/8/2023 1000 to 20/8/2023 2230\";","lastModifiedDate":"2023-09-15"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(expectedStr, parseOutput);","lastModifiedDate":"2023-09-15"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" public void todoSaveParse() {","lastModifiedDate":"2023-09-15"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" String saveString \u003d \"T || test || 1\";","lastModifiedDate":"2023-09-15"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e taskOptional \u003d TaskParser.parseSave(saveString);","lastModifiedDate":"2023-09-15"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.isPresent());","lastModifiedDate":"2023-09-15"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.get() instanceof Todo);","lastModifiedDate":"2023-09-15"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"test\", taskOptional.get().getName());","lastModifiedDate":"2023-09-15"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" public void deadlineSaveParse() {","lastModifiedDate":"2023-09-15"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" String saveString \u003d \"D || test2 || 0 || 19/9/2023 1800\";","lastModifiedDate":"2023-09-15"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e taskOptional \u003d TaskParser.parseSave(saveString);","lastModifiedDate":"2023-09-15"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.isPresent());","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.get() instanceof Deadline);","lastModifiedDate":"2023-09-15"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"test2\", taskOptional.get().getName());","lastModifiedDate":"2023-09-15"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" public void eventSaveParse() {","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" String saveString \u003d \"E || test3 || 0 || 19/8/2023 1000 to 21/8/2023 2000\";","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e taskOptional \u003d TaskParser.parseSave(saveString);","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.isPresent());","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.get() instanceof Event);","lastModifiedDate":"2023-09-15"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"test3\", taskOptional.get().getName());","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"TohLiYuan":71}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"idk","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":11}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"if not exist ..\\bin\\duke.task mkdir ..\\bin\\duke.task","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"javac -classpath ..\\src\\main\\java\\duke.task -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"REM run the program, feed duke.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"TohLiYuan":5,"-":18}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":"# run the program, feed duke.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"TohLiYuan":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"# duke.Duke project template","lastModifiedDate":"2023-09-09"},{"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":"TohLiYuan"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-09"},{"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":{"TohLiYuan":2,"-":22}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.0.13\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"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":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" def platforms \u003d [\"win\", \"linux\", \"mac\"]","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" def javafxDependency \u003d [\"javafx-graphics\", \"javafx-controls\", \"javafx-fxml\"]","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" for (plt in platforms) {","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" for (dep in javafxDependency) {","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" runtimeOnly \"org.openjfx:$dep:$javafx.version:$plt\"","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"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":"TohLiYuan"},"content":" mainClass.set(\"Launcher\")","lastModifiedDate":"2023-09-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":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-01"},{"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"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":"checkstyle {","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":"javafx {","lastModifiedDate":"2023-09-08"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" version \u003d \"17.0.7\"","lastModifiedDate":"2023-09-08"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" modules \u003d [ \u0027javafx.controls\u0027, \u0027javafx.fxml\u0027 ]","lastModifiedDate":"2023-09-08"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-08"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":"mainClassName \u003d \u0027Launcher\u0027","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"TohLiYuan":24,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"# KnowledgeYuan","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"### Tasks","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"Categorizes Tasks into 3 categories:","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"1. Todo","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" - A short task to be done","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"2. Deadline","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" - A Task to be done before a given date","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"3. Event","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" - A Task to be done throughout a given period of time","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"### Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"Stores a list of your tasks.","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"A user can add, remove, and mark a task as done/undone with the user of commands.","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"### Reminder","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"Reminds you of the most urgent tasks to be completed.","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"A user can also see what needs to be done in the next few days with a command.","lastModifiedDate":"2023-09-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":"### `todo` - Add a new Todo Task","lastModifiedDate":"2023-09-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"Adds a new Todo Task to the Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Example of usage: ","lastModifiedDate":"2023-09-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":"`todo [name]`","lastModifiedDate":"2023-09-15"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":"A new Todo Task will be added to your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"### `deadline` - Add a new Deadline Task","lastModifiedDate":"2023-09-15"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":"Adds a new Deadline Task to the Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":"`Deadline [name] /by [time]`","lastModifiedDate":"2023-09-15"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":"*The time should be in `D/M/YYYY HHmm` format*","lastModifiedDate":"2023-09-15"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"A new Deadline Task will be added to your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":"### `event` - Add a new Event Task","lastModifiedDate":"2023-09-15"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":"Adds a new Event Task to the Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":"`event [name] /from [time] /to [time]`","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":"*The time should be in `D/M/YYYY HHmm` format*","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":"A new Event Task will be added to your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":"### `list` - List all Tasks","lastModifiedDate":"2023-09-15"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":"List all Tasks in your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":72,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":73,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":74,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":75,"author":{"gitId":"TohLiYuan"},"content":"`list`","lastModifiedDate":"2023-09-15"},{"lineNumber":76,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":77,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":78,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":79,"author":{"gitId":"TohLiYuan"},"content":"A list of Tasks currently in your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":80,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":81,"author":{"gitId":"TohLiYuan"},"content":"### `delete` - Delete a Task","lastModifiedDate":"2023-09-15"},{"lineNumber":82,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":83,"author":{"gitId":"TohLiYuan"},"content":"Deletes the specified Task from your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":84,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":85,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":86,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":87,"author":{"gitId":"TohLiYuan"},"content":"`delete [index]`","lastModifiedDate":"2023-09-15"},{"lineNumber":88,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":89,"author":{"gitId":"TohLiYuan"},"content":"*[index] is the number of the Task as shown in the Task List*","lastModifiedDate":"2023-09-15"},{"lineNumber":90,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":91,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":92,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":93,"author":{"gitId":"TohLiYuan"},"content":"The Task will be removed from your Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":94,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":95,"author":{"gitId":"TohLiYuan"},"content":"### `mark` - Marks a Task as done","lastModifiedDate":"2023-09-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":97,"author":{"gitId":"TohLiYuan"},"content":"Marks the specified Task as done","lastModifiedDate":"2023-09-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":99,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":101,"author":{"gitId":"TohLiYuan"},"content":"`mark [index]`","lastModifiedDate":"2023-09-15"},{"lineNumber":102,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":103,"author":{"gitId":"TohLiYuan"},"content":"*[index] is the number of the Task as shown in the Task List*","lastModifiedDate":"2023-09-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":107,"author":{"gitId":"TohLiYuan"},"content":"The marked task should now have a \"tick\" sign in the status","lastModifiedDate":"2023-09-15"},{"lineNumber":108,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":109,"author":{"gitId":"TohLiYuan"},"content":"### `unmark` - Marks a Task as not done","lastModifiedDate":"2023-09-15"},{"lineNumber":110,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":111,"author":{"gitId":"TohLiYuan"},"content":"Marks the specified Task as not done","lastModifiedDate":"2023-09-15"},{"lineNumber":112,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":113,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":114,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":115,"author":{"gitId":"TohLiYuan"},"content":"`unmark [index]`","lastModifiedDate":"2023-09-15"},{"lineNumber":116,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":117,"author":{"gitId":"TohLiYuan"},"content":"*[index] is the number of the Task as shown in the Task List*","lastModifiedDate":"2023-09-15"},{"lineNumber":118,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":119,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":120,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":121,"author":{"gitId":"TohLiYuan"},"content":"The marked task should no longer have a \"tick\" sign in the status","lastModifiedDate":"2023-09-15"},{"lineNumber":122,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":123,"author":{"gitId":"TohLiYuan"},"content":"### `find` - Finds Tasks in the Task List","lastModifiedDate":"2023-09-15"},{"lineNumber":124,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":125,"author":{"gitId":"TohLiYuan"},"content":"Finds all Tasks in the Task List that has the specified keyword","lastModifiedDate":"2023-09-15"},{"lineNumber":126,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":127,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":128,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":129,"author":{"gitId":"TohLiYuan"},"content":"`find [keyword]`","lastModifiedDate":"2023-09-15"},{"lineNumber":130,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":131,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":132,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":133,"author":{"gitId":"TohLiYuan"},"content":"A list of Task with the keyword in their name","lastModifiedDate":"2023-09-15"},{"lineNumber":134,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":135,"author":{"gitId":"TohLiYuan"},"content":"### `remind` - Reminds you of urgent Tasks","lastModifiedDate":"2023-09-15"},{"lineNumber":136,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":137,"author":{"gitId":"TohLiYuan"},"content":"Tells you the urgent Tasks that should be completed in a specified time","lastModifiedDate":"2023-09-15"},{"lineNumber":138,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":139,"author":{"gitId":"TohLiYuan"},"content":"Example of usage:","lastModifiedDate":"2023-09-15"},{"lineNumber":140,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":141,"author":{"gitId":"TohLiYuan"},"content":"`remind (number of days)`","lastModifiedDate":"2023-09-15"},{"lineNumber":142,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":143,"author":{"gitId":"TohLiYuan"},"content":"*(number of days) represents the number of days you want to seek ahead* ","lastModifiedDate":"2023-09-15"},{"lineNumber":144,"author":{"gitId":"TohLiYuan"},"content":"*By default it looks for tasks 7 days in advance*","lastModifiedDate":"2023-09-15"},{"lineNumber":145,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":146,"author":{"gitId":"TohLiYuan"},"content":"Expected outcome:","lastModifiedDate":"2023-09-15"},{"lineNumber":147,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":148,"author":{"gitId":"TohLiYuan"},"content":"A list of task that you should complete within the next n days","lastModifiedDate":"2023-09-15"},{"lineNumber":149,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":150,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":151,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":152,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":153,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":154,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":155,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":156,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"TohLiYuan":136,"-":21}},{"path":"src/main/java/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" * The launcher entry point for duke GUI.","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"public class Launcher {","lastModifiedDate":"2023-09-08"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"TohLiYuan":10}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.ui.MainWindow;","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" * The main entry class to launch the duke GUI.","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Duke.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" stage.setTitle(\"KnowledgeYuan\");","lastModifiedDate":"2023-09-15"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" stage.show();","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" public void stop() {","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" Thread.sleep(1000);","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" } catch (InterruptedException e) {","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"TohLiYuan":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.ByeCommand;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.CommandParser;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"public class Duke {","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private static final String INIT_PHRASE \u003d \"KnowledgeYuan, at your service!\\nWhat can I do for you today?\";","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private static final String REMINDER_PHRASE \u003d","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" \"The following tasks are urgent! Please remove them from the list after completing!\";","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" private boolean isEnd \u003d false;","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" private CommandParser cp;","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" private ChatRecord chatRecord;","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * Initialises the Duke program.","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" * @return the greeting string.","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" public String init() {","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" cp \u003d new CommandParser();","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" chatRecord \u003d new ChatRecord();","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" chatRecord.loadData();","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" String reminders \u003d chatRecord.getReminder(LocalDate.now(), 1);","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" if (reminders.length() \u003e\u003d 1) {","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" return INIT_PHRASE + \"\\n\" + REMINDER_PHRASE + \"\\n\" + reminders;","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" return INIT_PHRASE;","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-09"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" * Returns a response from Duke from a given input.","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-09"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" * @param input the user input.","lastModifiedDate":"2023-09-09"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" * @return the response from duke.","lastModifiedDate":"2023-09-09"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-09"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand((input));","lastModifiedDate":"2023-09-09"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" if (ByeCommand.isBye(cmd)) {","lastModifiedDate":"2023-09-09"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" isEnd \u003d true;","lastModifiedDate":"2023-09-09"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" cmd.init(chatRecord);","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" String out \u003d cmd.execute();","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" assert out !\u003d null;","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" return out;","lastModifiedDate":"2023-09-09"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" public boolean isTerminate() {","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" return isEnd;","lastModifiedDate":"2023-09-09"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"TohLiYuan":58}},{"path":"src/main/java/duke/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * The command to exit the program.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"bye\";","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" private static final String BYE_PHRASE \u003d \"Access Terminated! Hope to see you again soon!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public ByeCommand() { }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) { }","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Bye Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @return The bye phrase to be displayed as feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" return BYE_PHRASE;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" public static boolean isBye(Command command) {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" return command instanceof ByeCommand;","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":29}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * The abstract class for commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" protected ChatRecord chatRecord;","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public abstract void init(ChatRecord chatRecord);","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public abstract String execute();","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":13}},{"path":"src/main/java/duke/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" * The command to create a Deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"deadline\";","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"New Deadline Task added to list!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" private String name;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to add Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" * @param date the date of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public DeadlineCommand(String name, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Deadline Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" * A new Deadline Task will be added to the records.","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" * @return The string to be displayed as feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" Deadline ddl \u003d new Deadline(name, date);","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord.addTask(ddl);","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + ddl.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + name + \" /by \" + date.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":55}},{"path":"src/main/java/duke/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.InvalidTaskException;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * The command to delete a Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"delete\";","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"The following task has been deleted: \";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private int toDelete;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public DeleteCommand(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" this.toDelete \u003d i;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Delete Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" * The selected Task will be deleted from the record.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" * @return The string representation of the Task to be deleted.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" assert toDelete \u003c this.chatRecord.getCount();","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d this.chatRecord.deleteTask(toDelete);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" } catch (InvalidTaskException e) {","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + toDelete;","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":46}},{"path":"src/main/java/duke/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" * The command to add an Event task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"event\";","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"New Event Task added to list!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" private String name;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to add an Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" * @param startDate the starting date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" * @param endDate the ending date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" public EventCommand(String name, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Event Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" * A new Event Task will be added to the records.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" * @return The string to be displayed as feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" Event ev \u003d new Event(name, startDate, endDate);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord.addTask(ev);","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + ev.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + name + \" /from \"","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" + startDate.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"))","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" + \" /to \" + endDate.format(DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":58}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * The command to find tasks with the given keyword","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"find\";","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"These are the tasks with the matching keyword:\";","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private static final String NO_RESULT \u003d \"You have no tasks in the list with the matching keyword!\";","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private String findWord;","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" private ChatRecord records;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" public FindCommand(String findWord) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.findWord \u003d findWord;","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" this.records \u003d records;","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cString\u003e res \u003d records.findMessage(findWord);","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" if (res.isPresent()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \"\\n\" + res.get();","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" return NO_RESULT;","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + findWord;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"TohLiYuan":39}},{"path":"src/main/java/duke/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * A placeholder command for invalid commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" private String prefix \u003d \"Invalid Command! \";","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" private String errMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command for invalid commands.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * @param errMessage the error message to show to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" public InvalidCommand(String errMessage) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" this.errMessage \u003d errMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) { }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Invalid Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" * @return The error string to be displayed as feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" return prefix + errMessage;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" return prefix + errMessage;","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":39}},{"path":"src/main/java/duke/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * The command to list all recorded tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"list\";","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" public ListCommand() {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created List Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * @return The list of task to be displayed to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" return \"You have \" + chatRecord.getCount() + \" tasks in your list!\\n\" + chatRecord.listMessage();","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":28}},{"path":"src/main/java/duke/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * The command to mark a task as complete.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"mark\";","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"Marked the following task as completed!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private int toMark;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to mark a task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @param i the task number of the task to be marked in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public MarkCommand(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" this.toMark \u003d i;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Mark Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * @return The string representation of task to be marked.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecord.setMark(toMark);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \"\\n\" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + toMark;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":45}},{"path":"src/main/java/duke/commands/RemindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * The command to list all urgent tasks within a time period.","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"public class RemindCommand extends Command {","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"remind\";","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private LocalDate currDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private int days;","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to display reminder to the user.","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * @param days The number of days to seek for urgent tasks.","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public RemindCommand(int days) {","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" this.currDate \u003d LocalDate.now();","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" this.days \u003d days;","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Remind Command.","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" * @return The reminder list to be displayed to the user.","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" String reminders \u003d this.chatRecord.getReminder(currDate, days);","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" if (reminders.length() \u003c 1) {","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" return \"You have no urgent tasks!\";","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"These are the tasks you need to finish by next %d day(s):\\n%s\", this.days, reminders);","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"TohLiYuan":46}},{"path":"src/main/java/duke/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * The command to add a Todo task.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"todo\";","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"New Todo Task added to list!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" private String name;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to add a Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public TodoCommand(String name) {","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Todo Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * A new Todo Task will be added to the records.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" * @return The string to be displayed as feedback to the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" Todo td \u003d new Todo(this.name);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord.addTask(td);","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \" \" + td.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + name;","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":49}},{"path":"src/main/java/duke/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.commands;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.records.ChatRecord;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * The command to unmark a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" public static final String COMMAND_PHRASE \u003d \"unmark\";","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static final String COMMAND_DESC \u003d \"Marked the following task as incomplete!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private int toUnmark;","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * Creates a command to unmark a Task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @param i the task number of the task to be unmarked in the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public UnmarkCommand(int i) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" this.toUnmark \u003d i;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" public void init(ChatRecord records) {","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" this.chatRecord \u003d records;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" * Executes the created Unmark Command.","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * @return The string representation of task to be unmarked.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public String execute() {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecord.setUnmark(toUnmark);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" SaveData.saveData(this.chatRecord.toSave());","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_DESC + \"\\n\" + task.toString();","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" return COMMAND_PHRASE + \" \" + toUnmark;","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":45}},{"path":"src/main/java/duke/parser/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.ByeCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.DeadlineCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.DeleteCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.EventCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.FindCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.InvalidCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.ListCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.MarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.RemindCommand;","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.TodoCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.UnmarkCommand;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * Parses user input into command.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"public class CommandParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern COMMAND_PATTERN \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern TODO_ARGS_PATTERN \u003d Pattern.compile(\"(?\u003cname\u003e\\\\S.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern DEADLINE_ARGS_PATTERN \u003d Pattern.compile(\"(?\u003cname\u003e\\\\S+.*)( /by )(?\u003ctime\u003e\\\\S.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" private static final Pattern EVENT_ARGS_PATTERN \u003d","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" Pattern.compile(\"(?\u003cname\u003e\\\\S+.*)( /from )(?\u003cstartTime\u003e\\\\S.*)( /to )(?\u003cendTime\u003e\\\\S.*)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" public CommandParser() { }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * Processes a user input to a command.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" * @param input the input string from the user","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" * @return the correct command from user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" * Returns an Invalid Command if a syntax error in the command is found.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" public Command parseCommand(String input) {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" Matcher matcher \u003d COMMAND_PATTERN.matcher(input);","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Invalid command format\");","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" String args \u003d matcher.group(\"arguments\");","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" switch (commandWord) {","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" case MarkCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" return new MarkCommand(Integer.parseInt(args.trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" case UnmarkCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" return new UnmarkCommand(Integer.parseInt(args.trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" case ListCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" case ByeCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" case FindCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" return new FindCommand(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" case DeleteCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" return new DeleteCommand(Integer.parseInt(args.trim()));","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" case TodoCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" Matcher tdMatcher \u003d TODO_ARGS_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" if (tdMatcher.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" return new TodoCommand(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Name cannot be empty!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" case EventCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" Matcher evMatcher \u003d EVENT_ARGS_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":" if (evMatcher.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":" return new EventCommand(evMatcher.group(\"name\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.parseTime(evMatcher.group(\"startTime\").trim()),","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.parseTime(evMatcher.group(\"endTime\").trim()));","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Bad event arguments!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"TohLiYuan"},"content":" case DeadlineCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"TohLiYuan"},"content":" Matcher ddlMatcher \u003d DEADLINE_ARGS_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"TohLiYuan"},"content":" if (ddlMatcher.find()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"TohLiYuan"},"content":" return new DeadlineCommand(ddlMatcher.group(\"name\"),","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.parseTime(ddlMatcher.group(\"time\").trim()));","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Bad deadline argument!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"TohLiYuan"},"content":" case RemindCommand.COMMAND_PHRASE:","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"TohLiYuan"},"content":" if (args.trim().length() \u003e 0) {","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"TohLiYuan"},"content":" int days \u003d Integer.parseInt(args.trim());","lastModifiedDate":"2023-09-12"},{"lineNumber":89,"author":{"gitId":"TohLiYuan"},"content":" return new RemindCommand(days);","lastModifiedDate":"2023-09-12"},{"lineNumber":90,"author":{"gitId":"TohLiYuan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-12"},{"lineNumber":91,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Please type in a valid number for your argument!\");","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"TohLiYuan"},"content":" return new RemindCommand(7);","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"TohLiYuan"},"content":" default:","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"TohLiYuan"},"content":" return new InvalidCommand(\"Command not found\");","lastModifiedDate":"2023-08-29"},{"lineNumber":97,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":100}},{"path":"src/main/java/duke/parser/TaskParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" * Parses Task into string and vice versa.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"public class TaskParser {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * Formats an array of Task for local storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @param tasks the array of Task to be stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * @return the formatted string to be stored.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public static String generateSaveString(Task[] tasks) {","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" ret.append(task.toSave());","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" ret.append(\"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" return ret.toString().trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * Parses a string of saved data into Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" * @param saveLine the string of saved data.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" * @return an Optional class containing the parsed Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" public static Optional\u003cTask\u003e parseSave(String saveLine) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" String[] splitArray \u003d saveLine.split(Task.DISCRIMINATOR.replaceAll(\"\\\\|\", \"\\\\\\\\|\"));","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e ret \u003d Optional.empty();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" switch (splitArray[0]) {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" case \"T\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Todo(splitArray[1], status));","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" case \"D\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Deadline(splitArray[1], status, TimeParser.parseTime(splitArray[3])));","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" case \"E\": {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" boolean status \u003d Integer.parseInt(splitArray[2]) \u003e\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" String[] timeDescriptor \u003d splitArray[3].split(\" to \");","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" ret \u003d Optional.of(new Event(splitArray[1], status, TimeParser.parseTime(timeDescriptor[0]),","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.parseTime(timeDescriptor[1])));","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" default: {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" return ret;","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"TohLiYuan":65}},{"path":"src/main/java/duke/parser/TimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * Parses Java DateTime to string and vice versa.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"public class TimeParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" private static DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private static DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm:ss\");","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" * Parses a string of time into a Java DateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * @param timeString the input string.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @return the parsed DateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public static LocalDateTime parseTime(String timeString) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" return LocalDateTime.parse(timeString, inputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" * Parses a Java DateTime into plain text for display.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" * @param dateTime the Java DateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" * @return the formatted string.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" public static String returnTime(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" return dateTime.format(outputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" * Changes a Java DateTime to the predefined input format of a date string.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" * Used for local storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" * @param dateTime the Java DateTime.","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" * @return the formatted string.","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" public static String toSaveString(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" return dateTime.format(inputFormat);","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"TohLiYuan":46}},{"path":"src/main/java/duke/records/ChatRecord.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.records;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TaskParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.storage.SaveData;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.InvalidTaskException;","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" * Records all tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"public class ChatRecord {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" private ArrayList\u003cTask\u003e chatRecords;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" public ChatRecord() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" chatRecords \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" * Loads the data from local storage to the current records instance.","lastModifiedDate":"2023-09-16"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" * @return the status of the import.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public String loadData() {","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" ArrayList\u003cTask\u003e temp \u003d SaveData.loadData();","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" if (temp.size() \u003e\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" chatRecords \u003d temp;","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" return \"Save loaded successfully!\";","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" return \"No valid save found! Starting a new instance...\";","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" chatRecords.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" * Deletes a task from the list.","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" * @param n the task number of the task in the records.","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" * @return the removed task.","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" public Task deleteTask(int n) throws InvalidTaskException {","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" if (n \u003e chatRecords.size()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" throw new InvalidTaskException(\"Task not found! Please specify a task available in the task list!\");","lastModifiedDate":"2023-09-12"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" return chatRecords.remove(n - 1);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" * Lists all tasks in the record.","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" * @return the string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" public String listMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" for (int i \u003d 0; i \u003c chatRecords.size(); i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" ret.append(String.format(\"\\t%d. %s\\n\", i + 1, chatRecords.get(i).toString()));","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" return ret.toString().stripTrailing();","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" * Finds all tasks that contains the specified find word.","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":" * @param findWord the word or phrase to find.","lastModifiedDate":"2023-09-01"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":" * @return an Optional of the string representation of all tasks with the specified find word.","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"TohLiYuan"},"content":" public Optional\u003cString\u003e findMessage(String findWord) {","lastModifiedDate":"2023-09-01"},{"lineNumber":74,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-09-01"},{"lineNumber":75,"author":{"gitId":"TohLiYuan"},"content":" for (Task task : chatRecords) {","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"TohLiYuan"},"content":" if (task.getName().contains(findWord)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"TohLiYuan"},"content":" ret.append(String.format(\"\\t%s\\n\", task));","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":80,"author":{"gitId":"TohLiYuan"},"content":" if (ret.length() \u003c\u003d 0) {","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"TohLiYuan"},"content":" return Optional.empty();","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"TohLiYuan"},"content":" return Optional.of(ret.toString().stripTrailing());","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":85,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"TohLiYuan"},"content":" * Returns the string representation for the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"TohLiYuan"},"content":" * @return the string representation for the save file.","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"TohLiYuan"},"content":" assert chatRecords !\u003d null;","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"TohLiYuan"},"content":" Task[] temp \u003d new Task[chatRecords.size()];","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"TohLiYuan"},"content":" temp \u003d chatRecords.toArray(temp);","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"TohLiYuan"},"content":" return TaskParser.generateSaveString(temp);","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"TohLiYuan"},"content":" public int getCount() {","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"TohLiYuan"},"content":" return chatRecords.size();","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"TohLiYuan"},"content":" public Task setMark(int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":103,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecords.get(n - 1).mark();","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"TohLiYuan"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":105,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"TohLiYuan"},"content":" public Task setUnmark(int n) {","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"TohLiYuan"},"content":" Task task \u003d chatRecords.get(n - 1).unmark();","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"TohLiYuan"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":110,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"TohLiYuan"},"content":" public String getReminder(LocalDate date, int days) {","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"TohLiYuan"},"content":" StringBuilder ret \u003d new StringBuilder();","lastModifiedDate":"2023-09-12"},{"lineNumber":114,"author":{"gitId":"TohLiYuan"},"content":" int n \u003d 0;","lastModifiedDate":"2023-09-12"},{"lineNumber":115,"author":{"gitId":"TohLiYuan"},"content":" for (Task task : chatRecords) {","lastModifiedDate":"2023-09-12"},{"lineNumber":116,"author":{"gitId":"TohLiYuan"},"content":" n++;","lastModifiedDate":"2023-09-12"},{"lineNumber":117,"author":{"gitId":"TohLiYuan"},"content":" String temp \u003d task.getReminder(date, days);","lastModifiedDate":"2023-09-12"},{"lineNumber":118,"author":{"gitId":"TohLiYuan"},"content":" if (temp \u003d\u003d null) {","lastModifiedDate":"2023-09-12"},{"lineNumber":119,"author":{"gitId":"TohLiYuan"},"content":" continue;","lastModifiedDate":"2023-09-12"},{"lineNumber":120,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":121,"author":{"gitId":"TohLiYuan"},"content":" ret.append(String.format(\"%d. %s\\n\", n, temp));","lastModifiedDate":"2023-09-12"},{"lineNumber":122,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":123,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":124,"author":{"gitId":"TohLiYuan"},"content":" return ret.toString().stripTrailing();","lastModifiedDate":"2023-09-12"},{"lineNumber":125,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":126,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":126}},{"path":"src/main/java/duke/storage/SaveData.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.storage;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.io.File;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TaskParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" * Handles saving and loading from local storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"public class SaveData {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" private static final String SAVE_FILE_LOCATION \u003d \"./SaveFile.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" * Saves the formatted data to local storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" * @param taskData the formatted string of the data to be saved.","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" public static void saveData(String taskData) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" File f \u003d new File(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" if (f.createNewFile()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" FileWriter fw \u003d new FileWriter(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" fw.write(taskData);","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" if (f.delete()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" FileWriter fw \u003d new FileWriter(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" fw.write(taskData);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" throw new Exception(\"The file cannot be deleted!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(\"IO Error! \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" * Loads the data from the local storage.","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" * @return An ArrayList of the loaded data. Returns an empty ArrayList if no stored data is found.","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" public static ArrayList\u003cTask\u003e loadData() {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" File f \u003d new File(SAVE_FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" Scanner sc \u003d new Scanner(f);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e optionalTask \u003d TaskParser.parseSave(sc.nextLine());","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" if (optionalTask.isPresent()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" optionalTask.ifPresent(tasks::add);","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" sc.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(\"No save file found! Starting base instance\");","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(\"IO Error! \" + e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"TohLiYuan":71}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TimeParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * Represents a Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime date;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @param date the date of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" public Deadline(String name, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-16"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.DEADLINE;","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Deadline Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * @param status the completion status of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * @param date the date of the Deadline.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public Deadline(String name, boolean status, LocalDateTime date) {","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-09-16"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.DEADLINE;","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.isDone ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-09-16"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[D]%s %s (by: %s)\", statusMark, name, TimeParser.returnTime(date));","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"D%s%s%s%d%s%s\", DISCRIMINATOR, name, DISCRIMINATOR,","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" Boolean.compare(isDone, false), DISCRIMINATOR, TimeParser.toSaveString(date));","lastModifiedDate":"2023-09-16"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" public String getReminder(LocalDate currDate, int days) {","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" if (this.isDone) {","lastModifiedDate":"2023-09-16"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" if (this.date.getYear() !\u003d currDate.getYear()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" if (currDate.getDayOfYear() + days - this.date.getDayOfYear() \u003e\u003d 0) {","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" return this.toString();","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":69}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import duke.parser.TimeParser;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" * Represents an Event Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Event Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" * @param startDate the starting date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" * @param endDate the ending date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" public Event(String name, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-16"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.EVENT;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Event Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" * @param status the completion status of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" * @param startDate the starting date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" * @param endDate the ending date of the Event.","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" public Event(String name, boolean status, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-09-16"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.EVENT;","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.isDone ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[E]%s %s (from: %s to: %s)\", statusMark, name,","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.returnTime(startDate), TimeParser.returnTime(endDate));","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"E%s%s%s%d%s%s to %s\", DISCRIMINATOR, name, DISCRIMINATOR,","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" Boolean.compare(isDone, false), DISCRIMINATOR, TimeParser.toSaveString(startDate),","lastModifiedDate":"2023-09-16"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" TimeParser.toSaveString(endDate));","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" public String getReminder(LocalDate currDate, int days) {","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" if (this.isDone) {","lastModifiedDate":"2023-09-16"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" if (this.endDate.getYear() !\u003d currDate.getYear()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-12"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":" if (currDate.getDayOfYear() + days - this.endDate.getDayOfYear() \u003e\u003d 0) {","lastModifiedDate":"2023-09-12"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":" return this.toString();","lastModifiedDate":"2023-09-12"},{"lineNumber":72,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":73,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-12"},{"lineNumber":74,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":75}},{"path":"src/main/java/duke/task/InvalidTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" * An exception for invalid tasks.","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" * Used when task operations are invalid.","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public class InvalidTaskException extends RuntimeException {","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" public InvalidTaskException(String message) {","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" super(message);","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"TohLiYuan":13}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * The abstract class for Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" public static final String DISCRIMINATOR \u003d \" || \";","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" protected String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" protected boolean isDone;","lastModifiedDate":"2023-09-16"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" protected TaskTypes type;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" * Marks the task as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * @return this Task that has been marked as done.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" public Task mark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" return this;","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" * Marks the task as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" * @return this Task that has been marked as not done.","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" public Task unmark() {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-16"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" return this;","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public String getName() {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" return this.name;","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.isDone ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-09-16"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"%s %s\", statusMark, name);","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" public abstract String toSave();","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" public abstract String getReminder(LocalDate currDate, int days);","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":48}},{"path":"src/main/java/duke/task/TaskTypes.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" * Contains all available Task Types.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public enum TaskTypes {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" TODO,","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" DEADLINE,","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" EVENT;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":11}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" * Represents a Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-09-16"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.TODO;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * Creates a new Todo Task.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" * @param name the name of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" * @param status the completion status of the Todo.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" public Todo(String name, boolean status) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" this.isDone \u003d status;","lastModifiedDate":"2023-09-16"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" this.type \u003d TaskTypes.TODO;","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" String statusMark \u003d this.isDone ? \"[✓]\" : \"[✕]\";","lastModifiedDate":"2023-09-16"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"[T]%s %s\", statusMark, name);","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" public String toSave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"T%s%s%s%d\", DISCRIMINATOR, name, DISCRIMINATOR, Boolean.compare(this.isDone, false));","lastModifiedDate":"2023-09-16"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" public String getReminder(LocalDate currDate, int days) {","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" return null;","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":48}},{"path":"src/main/java/duke/ui/ChatView.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.ui;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":" * Handles the UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":" * @author Toh Li Yuan (A0255811H)","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"public class ChatView {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":" private static final String LINE_BREAK \u003d \"____________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":" public ChatView() {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" * Starts the text UI.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" public void startMessage() {","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(String.format(\"%s\\nKnowledgeYuan, at your service!\\nWhat can I do for you today?\\n%s\",","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" LINE_BREAK, LINE_BREAK));","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" * Displays the stylised string result from actions to the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" * @param str the string to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" public void displayOutput(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(beautifyString(str));","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" * Displays the basic string result from actions to the console.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * @param str the string to be displayed.","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public void displayBasic(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" System.out.println(str);","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" private String beautifyString(String str) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" return String.format(\"\\t%s\\n%s\\n%s\", LINE_BREAK, str, LINE_BREAK).replace(\"\\n\", \"\\n\\t\");","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"TohLiYuan":43}},{"path":"src/main/java/duke/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.ui;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.paint.ImagePattern;","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.shape.Ellipse;","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" * The dialog box controller class for duke GUI.","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" * Displays the input from the player and response from duke.","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" private Label dialog;","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" private Ellipse imageClip;","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" try {","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-09"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-09"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-09"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" imageClip.setFill(new ImagePattern(img));","lastModifiedDate":"2023-09-09"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" private void flip() {","lastModifiedDate":"2023-09-09"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" this.setAlignment(Pos.CENTER_LEFT);","lastModifiedDate":"2023-09-09"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-09"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" FXCollections.reverse(tmp);","lastModifiedDate":"2023-09-09"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" this.getChildren().setAll(tmp);","lastModifiedDate":"2023-09-09"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" public static DialogBox getUserDialog(String text, Image iv) {","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" return new DialogBox(text, iv);","lastModifiedDate":"2023-09-09"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" public static DialogBox getDukeDialog(String text, Image iv) {","lastModifiedDate":"2023-09-09"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" var db \u003d new DialogBox(text, iv);","lastModifiedDate":"2023-09-09"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" db.flip();","lastModifiedDate":"2023-09-09"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" return db;","lastModifiedDate":"2023-09-09"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"TohLiYuan":58}},{"path":"src/main/java/duke/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.ui;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" * The main display window for duke GUI.","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" private AnchorPane anchorPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" private TextField inputField;","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" private Duke duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" private final Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/image/DaUser.png\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" private final Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/image/DaDuke.png\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" /**","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" * Initialises the duke GUI.","lastModifiedDate":"2023-09-09"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" public void initialize() {","lastModifiedDate":"2023-09-09"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-09"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" anchorPane.widthProperty().addListener((observable, oldValue, newValue) -\u003e {","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" dialogContainer.setPrefWidth(newValue.doubleValue() - 12);","lastModifiedDate":"2023-09-09"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" });","lastModifiedDate":"2023-09-09"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-09"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" this.duke \u003d d;","lastModifiedDate":"2023-09-09"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" String welcomeMsg \u003d this.duke.init();","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" dialogContainer.getChildren().addAll(DialogBox.getDukeDialog(welcomeMsg, dukeImage));","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-09"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" String input \u003d inputField.getText();","lastModifiedDate":"2023-09-09"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" String response \u003d getResponse(input);","lastModifiedDate":"2023-09-09"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-09"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-09"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-09"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" );","lastModifiedDate":"2023-09-09"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" inputField.clear();","lastModifiedDate":"2023-09-09"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" if (duke.isTerminate()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" exitApp();","lastModifiedDate":"2023-09-09"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" private String getResponse(String input) {","lastModifiedDate":"2023-09-09"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" return duke.getResponse(input);","lastModifiedDate":"2023-09-09"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" private void exitApp() {","lastModifiedDate":"2023-09-09"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" Platform.exit();","lastModifiedDate":"2023-09-09"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"TohLiYuan":71}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.shape.Ellipse?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"\u003cfx:root alignment\u003d\"CENTER_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" \u003cLabel fx:id\u003d\"dialog\" alignment\u003d\"CENTER_RIGHT\" text\u003d\"Label\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" \u003cFont name\u003d\"SansSerif Regular\" size\u003d\"12.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" \u003c/font\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" \u003c/padding\u003e\u003c/Label\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" \u003cEllipse fx:id\u003d\"imageClip\" centerX\u003d\"50.0\" centerY\u003d\"50.0\" fill\u003d\"DODGERBLUE\" radiusX\u003d\"40.0\" radiusY\u003d\"50.0\" stroke\u003d\"BLACK\" strokeType\u003d\"INSIDE\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" \u003c/Ellipse\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"TohLiYuan":33}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"\u003cAnchorPane fx:id\u003d\"anchorPane\" maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.ui.MainWindow\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" \u003cTextField fx:id\u003d\"inputField\" layoutX\u003d\"5.0\" layoutY\u003d\"551.6666666666666\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"311.0\" promptText\u003d\"Type here\" AnchorPane.bottomAnchor\u003d\"7.0\" AnchorPane.leftAnchor\u003d\"5.0\" AnchorPane.rightAnchor\u003d\"77.0\"\u003e","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" \u003cFont name\u003d\"SansSerif Regular\" size\u003d\"18.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" \u003c/font\u003e\u003c/TextField\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"551.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"70.0\" text\u003d\"Send\" AnchorPane.bottomAnchor\u003d\"7.0\" AnchorPane.rightAnchor\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"545.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\" AnchorPane.bottomAnchor\u003d\"50.0\" AnchorPane.leftAnchor\u003d\"0.0\" AnchorPane.rightAnchor\u003d\"0.0\" AnchorPane.topAnchor\u003d\"0.0\"\u003e","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"545.0\" prefWidth\u003d\"388.0\" AnchorPane.bottomAnchor\u003d\"50.0\" AnchorPane.leftAnchor\u003d\"6.0\" AnchorPane.rightAnchor\u003d\"-.0\" AnchorPane.topAnchor\u003d\"0.0\" /\u003e","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"TohLiYuan":23}},{"path":"src/test/java/duke/parser/CommandParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import duke.commands.Command;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"public class CommandParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":" public void todoParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"todo test123 test456\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" public void deadlineParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"deadline test123 test456 /by 3/8/2023 1200\";","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" public void eventParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"event test123 test456 /from 3/8/2023 1200 /to 5/8/2023 1200\";","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" public void invalidCommandTest() {","lastModifiedDate":"2023-09-15"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"test123 test456\";","lastModifiedDate":"2023-09-01"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"Invalid Command! Command not found\", cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" public void invalidArgumentTest() {","lastModifiedDate":"2023-09-15"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"todo\";","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"Invalid Command! Name cannot be empty!\", cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" public void complexParseTest() {","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" CommandParser cp \u003d new CommandParser();","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" String testInput \u003d \"todo deadline event /from 8/2/2023 1200 /to 8/3/2023 1400 /to 6/5/2023\";","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":" // Expected: Todo Command with deadline event... as its name","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" Command cmd \u003d cp.parseCommand(testInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" assertNotNull(cmd);","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(testInput, cmd.toString());","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"TohLiYuan":67}},{"path":"src/test/java/duke/parser/TaskParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"package duke.parser;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"import java.util.Optional;","lastModifiedDate":"2023-09-15"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"TohLiYuan"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"TohLiYuan"},"content":"public class TaskParserTest {","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"TohLiYuan"},"content":" public void todoSaveString() {","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":" Todo td \u003d new Todo(\"Test\", true);","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":" String parseOutput \u003d TaskParser.generateSaveString(new Task[]{td});","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"TohLiYuan"},"content":" String expectedStr \u003d \"T || Test || 1\";","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(expectedStr, parseOutput);","lastModifiedDate":"2023-09-15"},{"lineNumber":23,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":25,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":26,"author":{"gitId":"TohLiYuan"},"content":" public void deadlineSaveString() {","lastModifiedDate":"2023-09-15"},{"lineNumber":27,"author":{"gitId":"TohLiYuan"},"content":" LocalDateTime date \u003d LocalDateTime.of(2023, 8, 19, 10, 00);","lastModifiedDate":"2023-09-15"},{"lineNumber":28,"author":{"gitId":"TohLiYuan"},"content":" Deadline ddl \u003d new Deadline(\"Test\", date);","lastModifiedDate":"2023-09-15"},{"lineNumber":29,"author":{"gitId":"TohLiYuan"},"content":" String parseOutput \u003d TaskParser.generateSaveString(new Task[]{ddl});","lastModifiedDate":"2023-09-15"},{"lineNumber":30,"author":{"gitId":"TohLiYuan"},"content":" String expectedStr \u003d \"D || Test || 0 || 19/8/2023 1000\";","lastModifiedDate":"2023-09-15"},{"lineNumber":31,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(expectedStr, parseOutput);","lastModifiedDate":"2023-09-15"},{"lineNumber":32,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":33,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":34,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":35,"author":{"gitId":"TohLiYuan"},"content":" public void eventSaveString() {","lastModifiedDate":"2023-09-15"},{"lineNumber":36,"author":{"gitId":"TohLiYuan"},"content":" LocalDateTime startDate \u003d LocalDateTime.of(2023, 8, 19, 10, 00);","lastModifiedDate":"2023-09-15"},{"lineNumber":37,"author":{"gitId":"TohLiYuan"},"content":" LocalDateTime endDate \u003d LocalDateTime.of(2023, 8, 20, 22, 30);","lastModifiedDate":"2023-09-15"},{"lineNumber":38,"author":{"gitId":"TohLiYuan"},"content":" Event evt \u003d new Event(\"Test\", true, startDate, endDate);","lastModifiedDate":"2023-09-15"},{"lineNumber":39,"author":{"gitId":"TohLiYuan"},"content":" String parseOutput \u003d TaskParser.generateSaveString(new Task[]{evt});","lastModifiedDate":"2023-09-15"},{"lineNumber":40,"author":{"gitId":"TohLiYuan"},"content":" String expectedStr \u003d \"E || Test || 1 || 19/8/2023 1000 to 20/8/2023 2230\";","lastModifiedDate":"2023-09-15"},{"lineNumber":41,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(expectedStr, parseOutput);","lastModifiedDate":"2023-09-15"},{"lineNumber":42,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":43,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":44,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":45,"author":{"gitId":"TohLiYuan"},"content":" public void todoSaveParse() {","lastModifiedDate":"2023-09-15"},{"lineNumber":46,"author":{"gitId":"TohLiYuan"},"content":" String saveString \u003d \"T || test || 1\";","lastModifiedDate":"2023-09-15"},{"lineNumber":47,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e taskOptional \u003d TaskParser.parseSave(saveString);","lastModifiedDate":"2023-09-15"},{"lineNumber":48,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.isPresent());","lastModifiedDate":"2023-09-15"},{"lineNumber":49,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.get() instanceof Todo);","lastModifiedDate":"2023-09-15"},{"lineNumber":50,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"test\", taskOptional.get().getName());","lastModifiedDate":"2023-09-15"},{"lineNumber":51,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":52,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":53,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":54,"author":{"gitId":"TohLiYuan"},"content":" public void deadlineSaveParse() {","lastModifiedDate":"2023-09-15"},{"lineNumber":55,"author":{"gitId":"TohLiYuan"},"content":" String saveString \u003d \"D || test2 || 0 || 19/9/2023 1800\";","lastModifiedDate":"2023-09-15"},{"lineNumber":56,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e taskOptional \u003d TaskParser.parseSave(saveString);","lastModifiedDate":"2023-09-15"},{"lineNumber":57,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.isPresent());","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.get() instanceof Deadline);","lastModifiedDate":"2023-09-15"},{"lineNumber":59,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"test2\", taskOptional.get().getName());","lastModifiedDate":"2023-09-15"},{"lineNumber":60,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"TohLiYuan"},"content":" @Test","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"TohLiYuan"},"content":" public void eventSaveParse() {","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"TohLiYuan"},"content":" String saveString \u003d \"E || test3 || 0 || 19/8/2023 1000 to 21/8/2023 2000\";","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"TohLiYuan"},"content":" Optional\u003cTask\u003e taskOptional \u003d TaskParser.parseSave(saveString);","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.isPresent());","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(true, taskOptional.get() instanceof Event);","lastModifiedDate":"2023-09-15"},{"lineNumber":68,"author":{"gitId":"TohLiYuan"},"content":" assertEquals(\"test3\", taskOptional.get().getName());","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"TohLiYuan"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":70,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":71,"author":{"gitId":"TohLiYuan"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"TohLiYuan":71}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"TohLiYuan"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"TohLiYuan"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"TohLiYuan"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"TohLiYuan"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"TohLiYuan"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"TohLiYuan"},"content":"idk","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"TohLiYuan"},"content":"delete 1","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"TohLiYuan"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"TohLiYuan":11}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"TohLiYuan"},"content":"if not exist ..\\bin\\duke.task mkdir ..\\bin\\duke.task","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"TohLiYuan"},"content":"javac -classpath ..\\src\\main\\java\\duke.task -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"TohLiYuan"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"TohLiYuan"},"content":"REM run the program, feed duke.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"TohLiYuan"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"TohLiYuan":5,"-":18}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"TohLiYuan"},"content":"# run the program, feed duke.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"TohLiYuan":1,"-":37}}] diff --git a/TohLiYuan_ip_master/commits.json b/TohLiYuan_ip_master/commits.json index d0fcd458..45ecc4ce 100644 --- a/TohLiYuan_ip_master/commits.json +++ b/TohLiYuan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"TohLiYuan":[{"date":"2023-08-23","commitResults":[{"hash":"154cc4b83969a47dc8e3eb043b3be205d677b2d3","isMergeCommit":false,"messageTitle":"Rename \u0026 Skeletal Version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"f419d8e1bc507baf02a98c2fd16b313abc3a2de5","isMergeCommit":false,"messageTitle":"Refactor, Chat Echoing","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}},{"hash":"9baa02d1a2138f032dd8ec1159faa928742c1b97","isMergeCommit":false,"messageTitle":"Message Records \u0026 Command Refactor","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}},{"hash":"ca206eebbfc1e5c9720ad8333bdb74e57f0f422c","isMergeCommit":false,"messageTitle":"Tasks \u0026 Marking, renamed variables to follow convention","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":11}}},{"hash":"8c450e068fa290da190a0b78e79e5bb7399bf39c","isMergeCommit":false,"messageTitle":"Task Types, Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":16}}},{"hash":"44c0017b7290ffd7af3c9e1e01e731e01a1c0234","isMergeCommit":false,"messageTitle":"Minor Formatting","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"946b8037dea23940ec999b981e0076b02d36a960","isMergeCommit":false,"messageTitle":"Automated Test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"bat":{"insertions":3,"deletions":1}}},{"hash":"9974d8eff40bd2c248c13757d70a932fb07df322","isMergeCommit":false,"messageTitle":"Error Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":11}}},{"hash":"ed3c154da808b6dbd06bea62cc360ee0de7f8287","isMergeCommit":false,"messageTitle":"Deleting Tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":20,"deletions":15}}}]},{"date":"2023-08-28","commitResults":[{"hash":"1270151866d4479ada5998e19037136fdcf7dd9a","isMergeCommit":false,"messageTitle":"Primitive saving mechanism (to be tested)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":179,"deletions":1}}},{"hash":"8b061a9c97bf859476c08818258a52c5c24e80a9","isMergeCommit":false,"messageTitle":"Refactored new saving logic, better implementation","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":92,"deletions":127}}},{"hash":"d799c9babb3a70e6436878ba7d86ca844fd9abf0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"208d0001a92e71d5cb0c61d2982d232dfc4f50e1","isMergeCommit":false,"messageTitle":"Updated gitignore, cleanup","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"c75bea1555bff40a85a48b513ed64162af1a64de","isMergeCommit":false,"messageTitle":"Class Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":21}}},{"hash":"3825993d4fea3b4b8242926ade544331fc812475","isMergeCommit":false,"messageTitle":"Primitive DateTime for deadline and event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":22}}},{"hash":"f68200bce41575d74b583c1c33601f0005eee917","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"eac6a37db817b11299159d03c52de80e13b93ff3","isMergeCommit":false,"messageTitle":"Commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":208,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"9bfa56b70559ef64c44df4300a4ecbdf8dc324bd","isMergeCommit":false,"messageTitle":"Moved commands to default package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":13},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"cb8216b19aa4845bd30d1a83b35281b115ee35e3","isMergeCommit":false,"messageTitle":"Command Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":11}}}]},{"date":"2023-09-01","commitResults":[{"hash":"e015d86a58e1de8103eeaf64bfe7549d43550a3e","isMergeCommit":false,"messageTitle":"Better Save Logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":8}}},{"hash":"628cad711278173aeab3f0b09b9440779410c287","isMergeCommit":false,"messageTitle":"Implement UI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":173}}},{"hash":"8bf34c778609fb1a0aa1f49392b8e709cd1b3f10","isMergeCommit":false,"messageTitle":"Better regex matching","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"12f424ad08fd4d5174dfb195afb252cf68c6be12","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"935ee17e6018b834fce2351272b0ad0857a2942f","isMergeCommit":false,"messageTitle":"Organise packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":68},"bat":{"insertions":3,"deletions":3},"sh":{"insertions":1,"deletions":1}}},{"hash":"fceafdb06425add56099daced64e923a1ddd9537","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"c09237f74e5117ec5ca9b6e9f6c2045eb66f1288","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b53a8860298896acddcf5f1d0c0e7c0c3e74588","isMergeCommit":false,"messageTitle":"Add Gradle Support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":8,"deletions":6}}},{"hash":"a34aa441ee3f718e13678f97457e89076e71130e","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":7}}},{"hash":"26f57c3aab844dff6634e7759b2414f8c2a80842","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1e01950c10f4982c924854bd5786a3284f49b0f","isMergeCommit":false,"messageTitle":"Configure jar build","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"426030c8d322cdcfa92a7754c484f4adb9adac32","isMergeCommit":false,"messageTitle":"Fix empty command parse bug","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":5}}},{"hash":"9f17bff6d8117f0914a084ef9de01d1a90c2b8c9","isMergeCommit":false,"messageTitle":"Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":2}}},{"hash":"a028be7249d371a2b2f99f0bff39a5d567076375","isMergeCommit":false,"messageTitle":"Follow coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":81}}},{"hash":"935ee608d2be82d5e10a8aa97dfcd41d5ddf030c","isMergeCommit":false,"messageTitle":"Add more JavaDocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":191,"deletions":1}}},{"hash":"99c26c804bda9fe5ac25ea7349ab5d097d421b55","isMergeCommit":false,"messageTitle":"Add Find command","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":0}}},{"hash":"68c02414c81526a7376be4cb7487f680338a776e","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-JavaDoc\u0027","messageBody":"JavaDoc\n","fileTypesAndContributionMap":{}},{"hash":"4e358ed45b3d9cb9535a7414e55098cbcdc5a5ff","isMergeCommit":true,"messageTitle":"Resolve merge conflict for branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"79612a7108ca212eb23061b3d6c83e3fe1736dcc","isMergeCommit":true,"messageTitle":"Resolve merge conflict for branch-Level-9","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54bd58ec75c6362798c85c63ef1445c1d05839db","isMergeCommit":false,"messageTitle":"Checkstyle fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}}]},{"date":"2023-09-08","commitResults":[{"hash":"288891ce5cd60141dd97110a53b2eaac8dbbe44d","isMergeCommit":false,"messageTitle":"Add basic UI and custom dialog box","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":7,"deletions":0},"java":{"insertions":133,"deletions":1}}}]},{"date":"2023-09-09","commitResults":[{"hash":"21cfaf9c45a652c08cfd847a673f949232cb7bdb","isMergeCommit":false,"messageTitle":"Add image clipping","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":14,"deletions":0},"java":{"insertions":44,"deletions":7}}},{"hash":"da09dcadb22e1544507c893da8c13b44922aef8e","isMergeCommit":false,"messageTitle":"Implement fxml","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":56,"deletions":14},"java":{"insertions":174,"deletions":158},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"97fef6c88fac9b3ea4c158e66cb9fe975013422f","isMergeCommit":false,"messageTitle":"Add responsive UI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"fxml":{"insertions":5,"deletions":5},"java":{"insertions":11,"deletions":0}}},{"hash":"fc4efa005cf7806b55c2aa3d86b789aa6bdd601e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"99d5efee6852afde5b7b98eee026f4673cc19de2","isMergeCommit":false,"messageTitle":"Use Gradle CheckStyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":22}}},{"hash":"1d8d9cb0ba12a216156c1ec4414aab118687d618","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-12","commitResults":[{"hash":"224c9fb97c9bdec4c24f3a1b4f76f75bd7a6d275","isMergeCommit":false,"messageTitle":"Change method names","messageBody":"The following method names have been changed to sound more intuitive as per their return types:\n- Duke::getTermination() -\u003e Duke::isTerminate()\n- TaskParser::formatSave(Task[]) -\u003e TaskParser::generateSaveString(Task[])\n\nOther changes:\n- Update build.gradle for JavaFX JAR file\n- Update Duke.java to exclude Duke::main(String[]) in production code\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":23,"deletions":23}}},{"hash":"daf5dde7583ab4283f0cef068564bd4f7468e010","isMergeCommit":false,"messageTitle":"Use Assertions","messageBody":"Assertions are added to assume values that the program require to run smoothly, to prevent unexpected errors due to unchecked code\n\nOther changes:\n- Optimised the shutdown logic when typing the bye command\n","tags":["A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":12}}},{"hash":"a24472be47bd83301a48826ab0fe08a8c933ec7d","isMergeCommit":false,"messageTitle":"Remove magic values","messageBody":"Remove hard code values\n- Use Task.DISCRIMINATOR instead of \u0027||\u0027 in TaskParser::parseSave()\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"6cd883393b2a69452bb72110c95fe02d6d5e708c","isMergeCommit":true,"messageTitle":"Merge pull request #1 from TohLiYuan/branch-A-Assertions","messageBody":"Use Assertions","fileTypesAndContributionMap":{}},{"hash":"61067f195e2c283c75659320c10c00c0fff22353","isMergeCommit":true,"messageTitle":"Merge pull request #2 from TohLiYuan/branch-A-CodeQuality","messageBody":"Remove magic values","fileTypesAndContributionMap":{}},{"hash":"355898670fc7a7b788edaea6ebe544799bf376dc","isMergeCommit":false,"messageTitle":"Add reminders","messageBody":"Reminders can remind the user when a task is about to reach or has reached its deadline or ending date\n\nNew Functionality: Reminds the user of urgent tasks ending in a day upon app launch\n\nNew Command: Remind Command\nRemind Command allows users to specify the scope of days to seek for tasks\n\neg. remind 10\nThis command will show the tasks reaching its deadline within 10 days\n\nIf no number of days is specified, the command defaults itself to 7 days\n","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":2}}},{"hash":"8702451f18f05f0fcd4b6ec4d470124557c604b2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-B-Reminders\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8b3c6fd1c677d7f3ae9eb199b986e39ebfbc1898","isMergeCommit":false,"messageTitle":"Cleanup code and style checks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":35}}}]},{"date":"2023-09-15","commitResults":[{"hash":"6a93eba3c11b94c5adf795bf35da5f72a03e5ee8","isMergeCommit":false,"messageTitle":"Adjust main window UI","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":4,"deletions":4}}},{"hash":"c4e0a70fd5e4c71789f1c2d902a932aa8d136a3d","isMergeCommit":false,"messageTitle":"Add window title","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"1f00424290a9ed0c1660418869f3ba7ac7c33ad7","isMergeCommit":false,"messageTitle":"Change reminder feature logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"5c42b9661d89c687af2d70762d5d46d00948d2bf","isMergeCommit":false,"messageTitle":"Add UG","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":139,"deletions":11}}},{"hash":"1dbfaeabd6f6b6f9d85d319c0dc72cf089c7f66d","isMergeCommit":false,"messageTitle":"Minor changes","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"bbd928b895b1415de94b0ef7ed58fb4c7f7027ed","isMergeCommit":false,"messageTitle":"Add TaskParser Tests","messageBody":"","tags":["A-MoreTesting"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":2}}},{"hash":"ad240530e49192886ee93a2b4991671f90b8ec2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreTesting\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0b3dc5dec65285ac304887772a3ccd3a553c95df","isMergeCommit":false,"messageTitle":"Follow stylechecks for new tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"2e9cf289ca5ba32ea58fd5ba6bebcdafa62e1c5c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreTesting\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-16","commitResults":[{"hash":"23a6efa818559cf5d2d00c2729da04ae0e793481","isMergeCommit":false,"messageTitle":"Change method names","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":19}}}]}]},"authorFileTypeContributionMap":{"TohLiYuan":{"java":1583,"md":138,"fxml":56,"sh":1,"bat":5,"gradle":15,"txt":11}},"authorContributionVariance":{"TohLiYuan":65158.105},"authorDisplayNameMap":{"TohLiYuan":"CS2103T-F10-3 TOH ..YUAN"}} +{"authorDailyContributionsMap":{"TohLiYuan":[{"date":"2023-08-23","commitResults":[{"hash":"154cc4b83969a47dc8e3eb043b3be205d677b2d3","isMergeCommit":false,"messageTitle":"Rename \u0026 Skeletal Version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"f419d8e1bc507baf02a98c2fd16b313abc3a2de5","isMergeCommit":false,"messageTitle":"Refactor, Chat Echoing","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}},{"hash":"9baa02d1a2138f032dd8ec1159faa928742c1b97","isMergeCommit":false,"messageTitle":"Message Records \u0026 Command Refactor","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}},{"hash":"ca206eebbfc1e5c9720ad8333bdb74e57f0f422c","isMergeCommit":false,"messageTitle":"Tasks \u0026 Marking, renamed variables to follow convention","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":11}}},{"hash":"8c450e068fa290da190a0b78e79e5bb7399bf39c","isMergeCommit":false,"messageTitle":"Task Types, Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":16}}},{"hash":"44c0017b7290ffd7af3c9e1e01e731e01a1c0234","isMergeCommit":false,"messageTitle":"Minor Formatting","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"946b8037dea23940ec999b981e0076b02d36a960","isMergeCommit":false,"messageTitle":"Automated Test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"bat":{"insertions":3,"deletions":1}}},{"hash":"9974d8eff40bd2c248c13757d70a932fb07df322","isMergeCommit":false,"messageTitle":"Error Handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":11}}},{"hash":"ed3c154da808b6dbd06bea62cc360ee0de7f8287","isMergeCommit":false,"messageTitle":"Deleting Tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":20,"deletions":15}}}]},{"date":"2023-08-28","commitResults":[{"hash":"1270151866d4479ada5998e19037136fdcf7dd9a","isMergeCommit":false,"messageTitle":"Primitive saving mechanism (to be tested)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":179,"deletions":1}}},{"hash":"8b061a9c97bf859476c08818258a52c5c24e80a9","isMergeCommit":false,"messageTitle":"Refactored new saving logic, better implementation","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":92,"deletions":127}}},{"hash":"d799c9babb3a70e6436878ba7d86ca844fd9abf0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"208d0001a92e71d5cb0c61d2982d232dfc4f50e1","isMergeCommit":false,"messageTitle":"Updated gitignore, cleanup","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}}]},{"date":"2023-08-29","commitResults":[{"hash":"c75bea1555bff40a85a48b513ed64162af1a64de","isMergeCommit":false,"messageTitle":"Class Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":21}}},{"hash":"3825993d4fea3b4b8242926ade544331fc812475","isMergeCommit":false,"messageTitle":"Primitive DateTime for deadline and event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":22}}},{"hash":"f68200bce41575d74b583c1c33601f0005eee917","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"eac6a37db817b11299159d03c52de80e13b93ff3","isMergeCommit":false,"messageTitle":"Commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":208,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"9bfa56b70559ef64c44df4300a4ecbdf8dc324bd","isMergeCommit":false,"messageTitle":"Moved commands to default package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":13},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"cb8216b19aa4845bd30d1a83b35281b115ee35e3","isMergeCommit":false,"messageTitle":"Command Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":11}}}]},{"date":"2023-09-01","commitResults":[{"hash":"e015d86a58e1de8103eeaf64bfe7549d43550a3e","isMergeCommit":false,"messageTitle":"Better Save Logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":8}}},{"hash":"628cad711278173aeab3f0b09b9440779410c287","isMergeCommit":false,"messageTitle":"Implement UI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":173}}},{"hash":"8bf34c778609fb1a0aa1f49392b8e709cd1b3f10","isMergeCommit":false,"messageTitle":"Better regex matching","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"12f424ad08fd4d5174dfb195afb252cf68c6be12","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"935ee17e6018b834fce2351272b0ad0857a2942f","isMergeCommit":false,"messageTitle":"Organise packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":68},"bat":{"insertions":3,"deletions":3},"sh":{"insertions":1,"deletions":1}}},{"hash":"fceafdb06425add56099daced64e923a1ddd9537","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"c09237f74e5117ec5ca9b6e9f6c2045eb66f1288","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b53a8860298896acddcf5f1d0c0e7c0c3e74588","isMergeCommit":false,"messageTitle":"Add Gradle Support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":8,"deletions":6}}},{"hash":"a34aa441ee3f718e13678f97457e89076e71130e","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":7}}},{"hash":"26f57c3aab844dff6634e7759b2414f8c2a80842","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1e01950c10f4982c924854bd5786a3284f49b0f","isMergeCommit":false,"messageTitle":"Configure jar build","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"426030c8d322cdcfa92a7754c484f4adb9adac32","isMergeCommit":false,"messageTitle":"Fix empty command parse bug","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":5}}},{"hash":"9f17bff6d8117f0914a084ef9de01d1a90c2b8c9","isMergeCommit":false,"messageTitle":"Add JavaDocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":2}}},{"hash":"a028be7249d371a2b2f99f0bff39a5d567076375","isMergeCommit":false,"messageTitle":"Follow coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":81}}},{"hash":"935ee608d2be82d5e10a8aa97dfcd41d5ddf030c","isMergeCommit":false,"messageTitle":"Add more JavaDocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":191,"deletions":1}}},{"hash":"99c26c804bda9fe5ac25ea7349ab5d097d421b55","isMergeCommit":false,"messageTitle":"Add Find command","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":0}}},{"hash":"68c02414c81526a7376be4cb7487f680338a776e","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-JavaDoc\u0027","messageBody":"JavaDoc\n","fileTypesAndContributionMap":{}},{"hash":"4e358ed45b3d9cb9535a7414e55098cbcdc5a5ff","isMergeCommit":true,"messageTitle":"Resolve merge conflict for branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"79612a7108ca212eb23061b3d6c83e3fe1736dcc","isMergeCommit":true,"messageTitle":"Resolve merge conflict for branch-Level-9","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"54bd58ec75c6362798c85c63ef1445c1d05839db","isMergeCommit":false,"messageTitle":"Checkstyle fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":8}}}]},{"date":"2023-09-08","commitResults":[{"hash":"288891ce5cd60141dd97110a53b2eaac8dbbe44d","isMergeCommit":false,"messageTitle":"Add basic UI and custom dialog box","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":7,"deletions":0},"java":{"insertions":133,"deletions":1}}}]},{"date":"2023-09-09","commitResults":[{"hash":"21cfaf9c45a652c08cfd847a673f949232cb7bdb","isMergeCommit":false,"messageTitle":"Add image clipping","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":14,"deletions":0},"java":{"insertions":44,"deletions":7}}},{"hash":"da09dcadb22e1544507c893da8c13b44922aef8e","isMergeCommit":false,"messageTitle":"Implement fxml","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":56,"deletions":14},"java":{"insertions":174,"deletions":158},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"97fef6c88fac9b3ea4c158e66cb9fe975013422f","isMergeCommit":false,"messageTitle":"Add responsive UI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"fxml":{"insertions":5,"deletions":5},"java":{"insertions":11,"deletions":0}}},{"hash":"fc4efa005cf7806b55c2aa3d86b789aa6bdd601e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"99d5efee6852afde5b7b98eee026f4673cc19de2","isMergeCommit":false,"messageTitle":"Use Gradle CheckStyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":22}}},{"hash":"1d8d9cb0ba12a216156c1ec4414aab118687d618","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-12","commitResults":[{"hash":"224c9fb97c9bdec4c24f3a1b4f76f75bd7a6d275","isMergeCommit":false,"messageTitle":"Change method names","messageBody":"The following method names have been changed to sound more intuitive as per their return types:\n- Duke::getTermination() -\u003e Duke::isTerminate()\n- TaskParser::formatSave(Task[]) -\u003e TaskParser::generateSaveString(Task[])\n\nOther changes:\n- Update build.gradle for JavaFX JAR file\n- Update Duke.java to exclude Duke::main(String[]) in production code\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":23,"deletions":23}}},{"hash":"daf5dde7583ab4283f0cef068564bd4f7468e010","isMergeCommit":false,"messageTitle":"Use Assertions","messageBody":"Assertions are added to assume values that the program require to run smoothly, to prevent unexpected errors due to unchecked code\n\nOther changes:\n- Optimised the shutdown logic when typing the bye command\n","tags":["A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":12}}},{"hash":"a24472be47bd83301a48826ab0fe08a8c933ec7d","isMergeCommit":false,"messageTitle":"Remove magic values","messageBody":"Remove hard code values\n- Use Task.DISCRIMINATOR instead of \u0027||\u0027 in TaskParser::parseSave()\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"6cd883393b2a69452bb72110c95fe02d6d5e708c","isMergeCommit":true,"messageTitle":"Merge pull request #1 from TohLiYuan/branch-A-Assertions","messageBody":"Use Assertions","fileTypesAndContributionMap":{}},{"hash":"61067f195e2c283c75659320c10c00c0fff22353","isMergeCommit":true,"messageTitle":"Merge pull request #2 from TohLiYuan/branch-A-CodeQuality","messageBody":"Remove magic values","fileTypesAndContributionMap":{}},{"hash":"355898670fc7a7b788edaea6ebe544799bf376dc","isMergeCommit":false,"messageTitle":"Add reminders","messageBody":"Reminders can remind the user when a task is about to reach or has reached its deadline or ending date\n\nNew Functionality: Reminds the user of urgent tasks ending in a day upon app launch\n\nNew Command: Remind Command\nRemind Command allows users to specify the scope of days to seek for tasks\n\neg. remind 10\nThis command will show the tasks reaching its deadline within 10 days\n\nIf no number of days is specified, the command defaults itself to 7 days\n","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":2}}},{"hash":"8702451f18f05f0fcd4b6ec4d470124557c604b2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-B-Reminders\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8b3c6fd1c677d7f3ae9eb199b986e39ebfbc1898","isMergeCommit":false,"messageTitle":"Cleanup code and style checks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":35}}}]},{"date":"2023-09-15","commitResults":[{"hash":"6a93eba3c11b94c5adf795bf35da5f72a03e5ee8","isMergeCommit":false,"messageTitle":"Adjust main window UI","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":4,"deletions":4}}},{"hash":"c4e0a70fd5e4c71789f1c2d902a932aa8d136a3d","isMergeCommit":false,"messageTitle":"Add window title","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"1f00424290a9ed0c1660418869f3ba7ac7c33ad7","isMergeCommit":false,"messageTitle":"Change reminder feature logic","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"5c42b9661d89c687af2d70762d5d46d00948d2bf","isMergeCommit":false,"messageTitle":"Add UG","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":139,"deletions":11}}},{"hash":"1dbfaeabd6f6b6f9d85d319c0dc72cf089c7f66d","isMergeCommit":false,"messageTitle":"Minor changes","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"bbd928b895b1415de94b0ef7ed58fb4c7f7027ed","isMergeCommit":false,"messageTitle":"Add TaskParser Tests","messageBody":"","tags":["A-MoreTesting"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":2}}},{"hash":"ad240530e49192886ee93a2b4991671f90b8ec2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreTesting\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0b3dc5dec65285ac304887772a3ccd3a553c95df","isMergeCommit":false,"messageTitle":"Follow stylechecks for new tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"2e9cf289ca5ba32ea58fd5ba6bebcdafa62e1c5c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreTesting\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-16","commitResults":[{"hash":"23a6efa818559cf5d2d00c2729da04ae0e793481","isMergeCommit":false,"messageTitle":"Change method names","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":19}}}]},{"date":"2023-09-26","commitResults":[{"hash":"b82f90dd2ab4d2a363ee20466afce375d1f0eaec","isMergeCommit":false,"messageTitle":"Fix JavaFX Linux issue","messageBody":"","tags":["v0.2.1"],"fileTypesAndContributionMap":{"gradle":{"insertions":10,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"TohLiYuan":{"java":1583,"md":138,"fxml":56,"sh":1,"bat":5,"gradle":24,"txt":11}},"authorContributionVariance":{"TohLiYuan":51723.41},"authorDisplayNameMap":{"TohLiYuan":"CS2103T-F10-3 TOH ..YUAN"}} diff --git a/adhigop13_ip_master/authorship.json b/adhigop13_ip_master/authorship.json index cd862218..8a2f1ae2 100644 --- a/adhigop13_ip_master/authorship.json +++ b/adhigop13_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":"adhigop13"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"checkstyle {","lastModifiedDate":"2023-09-14"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter-api:5.8.1\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" testRuntimeOnly \u0027org.junit.jupiter:junit-jupiter-engine:5.8.1\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":"jar {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" manifest {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" attributes(","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" \u0027Main-Class\u0027: \u0027duke.Duke\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" )","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2023-09-15"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-09-15"},{"lineNumber":68,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":"mainClassName \u003d \u0027duke.Launcher\u0027","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"-":41,"adhigop13":30}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"D|0|finish project|2023-12-12 01:12","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"E|0|travel|2023-12-12 00:00|2023-12-31 00:00","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"E|1|travel|2023-12-12 00:00|2023-12-31 00:00","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"D|1|finish project|2023-12-12 01:12","lastModifiedDate":"2023-09-24"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"T|0|add","lastModifiedDate":"2023-09-24"}],"authorContributionMap":{"adhigop13":5}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# User Guide","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"Tom is a lightweight application to schedule and manage tasks. It is very fast and efficient. Can be distributed as a tiny .jar file!","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"### Feature - Add ToDo","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"\u003e #### todo ","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"A todo is a task that has a description, but no deadlines","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"**Usage** - `todo {task description}`","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"`todo finish homework`","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"![todo.png](images/todo.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"### Feature - Add deadlines","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":"\u003e#### deadline","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":"A deadline is a task that has a description and a deadline.","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":"**Usage** - `deadline {description/deadline}`","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":"`deadline finish project/2023-12-12 01:12`","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":"![deadline.png](images/deadline.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"### Feature - Add events","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"\u003e#### event","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":"An event is a task that has a description, from date and to date.","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":"**Usage** - `event {description/from/to}`","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":"`event travel/2023-12-12 00:00/2023-12-31 00:00`","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":"![event.png](images/event.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":"### Feature - Find tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":"\u003e#### find","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":"find function can index any task that may or may not contain the full keyword. It is flexible with inputs.","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":"**Usage** - `find {description}`","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":"`find travel` or `find tra` ","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":"![find.png](images/find.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"adhigop13"},"content":"### Feature - list tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"adhigop13"},"content":"\u003e#### list","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"adhigop13"},"content":"list function prints out all the tasks on memory.","lastModifiedDate":"2023-09-21"},{"lineNumber":80,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"adhigop13"},"content":"**Usage** - `list`","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"adhigop13"},"content":"`list`","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"adhigop13"},"content":"![list.png](images/list.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"adhigop13"},"content":"### Feature - Delete tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":94,"author":{"gitId":"adhigop13"},"content":"\u003e#### delete","lastModifiedDate":"2023-09-21"},{"lineNumber":95,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":96,"author":{"gitId":"adhigop13"},"content":"delete function can delete any task based on the item number.","lastModifiedDate":"2023-09-21"},{"lineNumber":97,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"adhigop13"},"content":"**Usage** - `delete {item number}`","lastModifiedDate":"2023-09-21"},{"lineNumber":99,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":100,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":101,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":102,"author":{"gitId":"adhigop13"},"content":"`delete 1`","lastModifiedDate":"2023-09-21"},{"lineNumber":103,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":104,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":105,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":106,"author":{"gitId":"adhigop13"},"content":"![delete.png](images/delete.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":108,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"adhigop13"},"content":"### Feature - mark tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":111,"author":{"gitId":"adhigop13"},"content":"\u003e#### mark","lastModifiedDate":"2023-09-21"},{"lineNumber":112,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"adhigop13"},"content":"mark function can mark any task (with an X) based on the item number.","lastModifiedDate":"2023-09-21"},{"lineNumber":114,"author":{"gitId":"adhigop13"},"content":"Tasks that are already marked, cannot be marked again.","lastModifiedDate":"2023-09-21"},{"lineNumber":115,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":116,"author":{"gitId":"adhigop13"},"content":"**Usage** - `mark {item number}`","lastModifiedDate":"2023-09-21"},{"lineNumber":117,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":118,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":119,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":120,"author":{"gitId":"adhigop13"},"content":"`mark 1`","lastModifiedDate":"2023-09-21"},{"lineNumber":121,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":122,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":123,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":124,"author":{"gitId":"adhigop13"},"content":"![mark.png](images/mark.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":126,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"adhigop13"},"content":"### Feature - unmark tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":129,"author":{"gitId":"adhigop13"},"content":"\u003e#### unmark","lastModifiedDate":"2023-09-21"},{"lineNumber":130,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":131,"author":{"gitId":"adhigop13"},"content":"unmark function can mark any task (with an X) based on the item number.","lastModifiedDate":"2023-09-21"},{"lineNumber":132,"author":{"gitId":"adhigop13"},"content":"Tasks that are already unmarked, cannot be unmarked again.","lastModifiedDate":"2023-09-21"},{"lineNumber":133,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":134,"author":{"gitId":"adhigop13"},"content":"**Usage** - `unmark {item number}`","lastModifiedDate":"2023-09-21"},{"lineNumber":135,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":136,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":137,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":138,"author":{"gitId":"adhigop13"},"content":"`unmark 1`","lastModifiedDate":"2023-09-21"},{"lineNumber":139,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":140,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":141,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":142,"author":{"gitId":"adhigop13"},"content":"![unmark.png](images/unmark.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":144,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":146,"author":{"gitId":"adhigop13"},"content":"### Feature - save tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":147,"author":{"gitId":"adhigop13"},"content":"\u003e#### save","lastModifiedDate":"2023-09-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":149,"author":{"gitId":"adhigop13"},"content":"save function can save all the actions committed since application opening.","lastModifiedDate":"2023-09-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":151,"author":{"gitId":"adhigop13"},"content":"**Usage** - `save`","lastModifiedDate":"2023-09-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":153,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":155,"author":{"gitId":"adhigop13"},"content":"`save`","lastModifiedDate":"2023-09-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":157,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":159,"author":{"gitId":"adhigop13"},"content":"![save.png](images/save.png)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"-":21,"adhigop13":138}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-16"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-16"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-16"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-16"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-16"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-16"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" private Label dialog;","lastModifiedDate":"2023-09-16"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-16"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-16"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-16"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-16"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-16"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-16"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-16"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-16"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-16"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-16"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-16"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" DialogBox db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" return db;","lastModifiedDate":"2023-09-08"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-08"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"adhigop13":42}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" * The type Duke.","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"public class Duke {","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" public static final Path PATH_OF_DIRECTORY \u003d Paths.get(\"./data/duke.txt\");","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" private TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Duke.","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" public Duke() {","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" Storage.readFromDisk(PATH_OF_DIRECTORY, taskList.getStoreTask());","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-16"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" Parser parserObject \u003d new Parser(taskList);","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" String dukeResponse \u003d parserObject.parse(input);","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" assert dukeResponse !\u003d null;","lastModifiedDate":"2023-09-15"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return dukeResponse;","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" return \"Invalid character input\";","lastModifiedDate":"2023-09-16"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" return \"Invalid entry / Task not in list... Please try again...\";","lastModifiedDate":"2023-09-16"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" return \"OOPS!!! Sorry, but i do not know what that means :-(\";","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"adhigop13":41}},{"path":"src/main/java/duke/DukeDialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"public class DukeDialogBox extends HBox {","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" private Label dialog;","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" private DukeDialogBox(String text, Image img) {","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DukeReplyDialogBox.fxml\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" private void flip() {","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" public static DukeDialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" var db \u003d new DukeDialogBox(text, img);","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" db.flip();","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" return db;","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" * Greeting dialog box.","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" * @param iv the image to be displayed in the greeting box.","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" * @return the dialog box.","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" public static DukeDialogBox greetingDialogBox(Image iv) {","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" String greeting \u003d \"Welcome! I am Tom!\";","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" var duke \u003d new DukeDialogBox(greeting, iv);","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" duke.flip();","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" return duke;","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"adhigop13":70}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":" * The type Duke exception.","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"adhigop13":10}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" * Entry point to Duke program","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"public class Launcher {","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"adhigop13":12}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-16"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-16"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-16"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-16"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-16"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-16"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-16"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-16"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-16"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-09-16"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-16"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-16"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-16"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-16"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-16"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-16"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" stage.setTitle(\"Tom!\");","lastModifiedDate":"2023-09-24"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" stage.show();","lastModifiedDate":"2023-09-16"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-16"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-16"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"adhigop13":32}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-16"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-16"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-16"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-16"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-16"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-16"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-16"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-16"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-16"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-16"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-16"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" private Duke duke;","lastModifiedDate":"2023-09-16"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" private final Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" private final Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" * Initialize.","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" public void initialize() {","lastModifiedDate":"2023-09-16"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-16"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" dialogContainer.getChildren().add(DukeDialogBox.greetingDialogBox(dukeImage));","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-16"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-16"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-16"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-16"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-16"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-16"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-16"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-16"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-16"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" DukeDialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" );","lastModifiedDate":"2023-09-16"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" userInput.clear();","lastModifiedDate":"2023-09-16"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"adhigop13":55}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":" * This class deals with making sense of the user input and carrying out tasks accordingly.","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" private enum TaskKeyVal { todo, deadline, event, delete, mark, unmark, save, list, find }","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" private enum SingleOperandTasks { save, list }","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" private TaskList parseTaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" public Parser(TaskList taskList) {","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" parseTaskList \u003d taskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * Returns a boolean based on the user input choice.","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" * bye -\u003e initiates user exit.","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * list -\u003e lists all the tasks.","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" * mark -\u003e mark the task.","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" * unmark -\u003e unmark the task.","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" * ToDo -\u003e creates a new ToDo and adds to task list.","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" * Deadline -\u003e creates a new Deadline and adds to task list.","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" * Event -\u003e creates a new Event and adds to task list.","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" * Delete -\u003e Deletes task at given number.","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" * find -\u003e Finds task based on a certain keyword.","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" * @param userInput String value provided to be made sense of and carry task.","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" * @return returns string value received after processing the task.","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" * @throws DukeException when incorrect / invalid input is entered.","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" public String parse(String userInput) throws DukeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" String[] userInputList \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" assert userInputList !\u003d null;","lastModifiedDate":"2023-09-15"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" String userTaskChoiceKey \u003d userInputList[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" //Stores enum value. might throw exception if invalid input entered.","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" TaskKeyVal taskKeyVal \u003d TaskKeyVal.valueOf(userTaskChoiceKey);","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" return getString(userInputList, userTaskChoiceKey, taskKeyVal);","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" private String getString(String[] userInputList, String userTaskChoiceKey, TaskKeyVal taskKeyVal)","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" throws DukeException {","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" if (userInputList.length \u003d\u003d 1 \u0026\u0026 enumCheck(userTaskChoiceKey)) {","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\" ☹ OOPS!!! The description of a task cannot be empty.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" switch (taskKeyVal) {","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" case save:","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.saveData();","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" case list:","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.userListChoice();","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" case mark:","lastModifiedDate":"2023-09-16"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" case unmark:","lastModifiedDate":"2023-09-16"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" String userMarkerChoice \u003d userInputList[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.userMarkUnmark(userMarkerChoice, userTaskChoiceKey);","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" case todo:","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.addToDo(userInputList[1]);","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" case deadline:","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" //String[] deadlineList \u003d userInputList[1].split(\"/\", 2);","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.addDeadline(userInputList);","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" case event:","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" //String[] eventList \u003d userInputList[1].split(\"/\", 3);","lastModifiedDate":"2023-09-24"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.addEvent(userInputList);","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" case delete:","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" Integer delUserChoice \u003d Integer.parseInt(userInputList[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" return parseTaskList.deleteTask(delUserChoice);","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" case find:","lastModifiedDate":"2023-09-16"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" String findThis \u003d userInputList[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.findTask(findThis);","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":" default:","lastModifiedDate":"2023-09-16"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"OOPS!!! Sorry, but i do not know what that means :-(\");","lastModifiedDate":"2023-09-08"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":74,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"adhigop13"},"content":" private static boolean enumCheck(String input) {","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"adhigop13"},"content":" for (SingleOperandTasks taskKey : SingleOperandTasks.values()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"adhigop13"},"content":" if (taskKey.name().equalsIgnoreCase(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"adhigop13"},"content":" return false;","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":85}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"import task.Event;","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"import task.Task;","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-20"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * This class handles the data reads from Duke.txt file to load tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" * Reads data from file and loads into ArrayList if available. Else creates the file.","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" * @param pathOfDirectory Path variable provided","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" * @param storeTask ArrayList which stores tasks when program is running","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" * @throws IOException if an I/O error occurs","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" public static void readFromDisk(Path pathOfDirectory, ArrayList\u003cTask\u003e storeTask) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" Files.createDirectories(pathOfDirectory.getParent());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" handleFileAccess(pathOfDirectory, storeTask);","lastModifiedDate":"2023-09-16"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" private static void handleFileAccess(Path pathOfDirectory, ArrayList\u003cTask\u003e storeTask) throws IOException {","lastModifiedDate":"2023-09-16"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" if (Files.exists(pathOfDirectory)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" readFromFile(pathOfDirectory, storeTask);","lastModifiedDate":"2023-09-16"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-16"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" createNewFile(pathOfDirectory);","lastModifiedDate":"2023-09-16"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" private static void readFromFile(Path pathOfDirectory, ArrayList\u003cTask\u003e storeTask) throws IOException {","lastModifiedDate":"2023-09-16"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" List\u003cString\u003e fileLines \u003d Files.readAllLines(pathOfDirectory);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" for (String task : fileLines) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" //since \"|\" is a special character, use \"//\"","lastModifiedDate":"2023-09-16"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" String[] taskVariablesTemp \u003d task.split(\"\\\\|\");","lastModifiedDate":"2023-09-16"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" handleTaskTypes(taskVariablesTemp, storeTask);","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" private static void handleTaskTypes(String[] taskVariablesTemp, ArrayList\u003cTask\u003e storeTask) {","lastModifiedDate":"2023-09-16"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" String taskType \u003d taskVariablesTemp[0];","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" switch(taskType) {","lastModifiedDate":"2023-09-16"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" case \"T\":","lastModifiedDate":"2023-09-16"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new ToDo(Integer.parseInt(taskVariablesTemp[1]), taskVariablesTemp[2]));","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" break;","lastModifiedDate":"2023-09-16"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" case \"D\":","lastModifiedDate":"2023-09-16"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new Deadline(","lastModifiedDate":"2023-09-20"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" Integer.parseInt(taskVariablesTemp[1]), taskVariablesTemp[2], taskVariablesTemp[3]));","lastModifiedDate":"2023-09-20"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" break;","lastModifiedDate":"2023-09-16"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" case \"E\":","lastModifiedDate":"2023-09-16"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new Event(Integer.parseInt(","lastModifiedDate":"2023-09-20"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" taskVariablesTemp[1]), taskVariablesTemp[2], taskVariablesTemp[3], taskVariablesTemp[4]));","lastModifiedDate":"2023-09-20"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" break;","lastModifiedDate":"2023-09-16"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" default:","lastModifiedDate":"2023-09-16"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" throw new IllegalStateException(\"Unexpected value: \" + taskType);","lastModifiedDate":"2023-09-16"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" private static void createNewFile(Path pathOfDirectory) throws IOException {","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" Files.createFile(pathOfDirectory);","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":66}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import java.util.ListIterator;","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"import dukeuielements.Ui;","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"import task.Task;","lastModifiedDate":"2023-09-20"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * This class holds the ArrayList to load all the tasks. Contains important Task manipulation methods.","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" //stores all the tasks","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" private ArrayList\u003cTask\u003e storeTask \u003d new ArrayList\u003c\u003e(1);","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" * Displays the entire list of tasks to user.","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" public String userListChoice() {","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" ListIterator\u003cTask\u003e ls \u003d storeTask.listIterator();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return Ui.printList(ls);","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" * Mark or unmark the task.","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" * @param taskNumber The task number to be marked/unmarked.","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" * @param userMarkerChoice User choice mark/unmark.","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" public String userMarkUnmark(String taskNumber, String userMarkerChoice) throws DukeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" Task taskItem \u003d storeTask.get(Integer.parseInt(taskNumber) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" return taskItem.changeStatus(userMarkerChoice);","lastModifiedDate":"2023-09-16"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" * Adds task with given description to ArrayList.","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" * @param userDescription Description attached to task.","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" public String addToDo(String userDescription) {","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" ToDo td \u003d new ToDo(userDescription);","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" storeTask.add(td);","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" return Ui.printNumberOfEntries(td, this);","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" * Adds a new Deadline task to ArrayList.","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" * @param userInputList list that contains the user input.","lastModifiedDate":"2023-09-24"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" public String addDeadline(String[] userInputList) {","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" String[] deadlineList \u003d userInputList[1].split(\"/\", 2);","lastModifiedDate":"2023-09-24"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" String userDescription \u003d deadlineList[0];","lastModifiedDate":"2023-09-24"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" String deadlineBy \u003d deadlineList[1];","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" Deadline deadline \u003d new Deadline(userDescription, deadlineBy);","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" storeTask.add(deadline);","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" return Ui.printNumberOfEntries(deadline, this);","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" } catch (DateTimeParseException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" return Ui.invalidDeadlineFormat();","lastModifiedDate":"2023-09-24"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":" * Adds a new Deadline task to ArrayList.","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"adhigop13"},"content":" * @param userInputList list that contains the user input.","lastModifiedDate":"2023-09-24"},{"lineNumber":75,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"adhigop13"},"content":" public String addEvent(String[] userInputList) {","lastModifiedDate":"2023-09-24"},{"lineNumber":77,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"adhigop13"},"content":" String[] eventList \u003d userInputList[1].split(\"/\", 3);","lastModifiedDate":"2023-09-24"},{"lineNumber":79,"author":{"gitId":"adhigop13"},"content":" String userDescription \u003d eventList[0];","lastModifiedDate":"2023-09-24"},{"lineNumber":80,"author":{"gitId":"adhigop13"},"content":" String from \u003d eventList[1];","lastModifiedDate":"2023-09-24"},{"lineNumber":81,"author":{"gitId":"adhigop13"},"content":" String to \u003d eventList[2];","lastModifiedDate":"2023-09-24"},{"lineNumber":82,"author":{"gitId":"adhigop13"},"content":" Event event \u003d new Event(userDescription, from, to);","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"adhigop13"},"content":" storeTask.add(event);","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"adhigop13"},"content":" return Ui.printNumberOfEntries(event, this);","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"adhigop13"},"content":" } catch (DateTimeParseException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":86,"author":{"gitId":"adhigop13"},"content":" return Ui.invalidEventFormat();","lastModifiedDate":"2023-09-24"},{"lineNumber":87,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"adhigop13"},"content":" * Deletes task from ArrayList.","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"adhigop13"},"content":" * @param delUserChoice The task number to be deleted (based on number on list).","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"adhigop13"},"content":" * @throws DukeException If TaskList is empty or invalid selection by user.","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"adhigop13"},"content":" public String deleteTask(int delUserChoice) throws DukeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"adhigop13"},"content":" if ((delUserChoice - 1) \u003c 0) { //if number entered smaller than 1, array will go negative index.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"Invalid Task entered. Please try again...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"adhigop13"},"content":" } else if (storeTask.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"Task Scheduler is empty... Please try again!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"adhigop13"},"content":" Task itemRemoved \u003d storeTask.remove(delUserChoice - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"adhigop13"},"content":" return Ui.deleteTaskPrint(itemRemoved, this);","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":107,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":108,"author":{"gitId":"adhigop13"},"content":" * Find task string.","lastModifiedDate":"2023-09-21"},{"lineNumber":109,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":110,"author":{"gitId":"adhigop13"},"content":" * @param findThis user input given with find function","lastModifiedDate":"2023-09-21"},{"lineNumber":111,"author":{"gitId":"adhigop13"},"content":" * @return filtered list","lastModifiedDate":"2023-09-21"},{"lineNumber":112,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"adhigop13"},"content":" public String findTask(String findThis) {","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"adhigop13"},"content":" ArrayList\u003cTask\u003e filteredList \u003d altFindFunctions(findThis);","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"adhigop13"},"content":" ListIterator\u003cTask\u003e iterFilteredList \u003d filteredList.listIterator();","lastModifiedDate":"2023-09-19"},{"lineNumber":116,"author":{"gitId":"adhigop13"},"content":" if (filteredList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-19"},{"lineNumber":117,"author":{"gitId":"adhigop13"},"content":" return Ui.emptyList();","lastModifiedDate":"2023-09-19"},{"lineNumber":118,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-19"},{"lineNumber":119,"author":{"gitId":"adhigop13"},"content":" return Ui.findTaskPrint(iterFilteredList);","lastModifiedDate":"2023-09-19"},{"lineNumber":120,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":121,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":122,"author":{"gitId":"adhigop13"},"content":" private ArrayList\u003cTask\u003e altFindFunctions(String findThis) {","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"adhigop13"},"content":" String[] breakDownFindFunction \u003d findThis.split(\" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":124,"author":{"gitId":"adhigop13"},"content":" ListIterator\u003cTask\u003e ls \u003d storeTask.listIterator();","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"adhigop13"},"content":" ArrayList\u003cTask\u003e filteredList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":126,"author":{"gitId":"adhigop13"},"content":" switch (breakDownFindFunction.length) {","lastModifiedDate":"2023-09-19"},{"lineNumber":127,"author":{"gitId":"adhigop13"},"content":" case 1:","lastModifiedDate":"2023-09-19"},{"lineNumber":128,"author":{"gitId":"adhigop13"},"content":" return normalFind(findThis, ls, filteredList);","lastModifiedDate":"2023-09-19"},{"lineNumber":129,"author":{"gitId":"adhigop13"},"content":" case 2:","lastModifiedDate":"2023-09-19"},{"lineNumber":130,"author":{"gitId":"adhigop13"},"content":" return taskFind(breakDownFindFunction, ls, filteredList);","lastModifiedDate":"2023-09-19"},{"lineNumber":131,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":132,"author":{"gitId":"adhigop13"},"content":" default:","lastModifiedDate":"2023-09-19"},{"lineNumber":133,"author":{"gitId":"adhigop13"},"content":" return filteredList;","lastModifiedDate":"2023-09-19"},{"lineNumber":134,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":135,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":136,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":137,"author":{"gitId":"adhigop13"},"content":" private static ArrayList\u003cTask\u003e normalFind(String findThis, ListIterator\u003cTask\u003e ls, ArrayList\u003cTask\u003e filteredList) {","lastModifiedDate":"2023-09-19"},{"lineNumber":138,"author":{"gitId":"adhigop13"},"content":" while (ls.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"adhigop13"},"content":" Task current \u003d ls.next();","lastModifiedDate":"2023-09-02"},{"lineNumber":140,"author":{"gitId":"adhigop13"},"content":" String currentDescription \u003d current.getDescription();","lastModifiedDate":"2023-09-02"},{"lineNumber":141,"author":{"gitId":"adhigop13"},"content":" if (currentDescription.contains(findThis)) {","lastModifiedDate":"2023-09-02"},{"lineNumber":142,"author":{"gitId":"adhigop13"},"content":" filteredList.add(current);","lastModifiedDate":"2023-09-02"},{"lineNumber":143,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":144,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":145,"author":{"gitId":"adhigop13"},"content":" return filteredList;","lastModifiedDate":"2023-09-19"},{"lineNumber":146,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":147,"author":{"gitId":"adhigop13"},"content":" private static ArrayList\u003cTask\u003e taskFind(String[] breakDownFindFunction, ListIterator\u003cTask\u003e ls,","lastModifiedDate":"2023-09-21"},{"lineNumber":148,"author":{"gitId":"adhigop13"},"content":" ArrayList\u003cTask\u003e filteredList) {","lastModifiedDate":"2023-09-21"},{"lineNumber":149,"author":{"gitId":"adhigop13"},"content":" String findFunctionMainType \u003d breakDownFindFunction[0];","lastModifiedDate":"2023-09-19"},{"lineNumber":150,"author":{"gitId":"adhigop13"},"content":" String findFunctionSubType \u003d breakDownFindFunction[1];","lastModifiedDate":"2023-09-19"},{"lineNumber":151,"author":{"gitId":"adhigop13"},"content":" if (findFunctionMainType.equals(\"all\")) {","lastModifiedDate":"2023-09-19"},{"lineNumber":152,"author":{"gitId":"adhigop13"},"content":" return getTasks(ls, filteredList, findFunctionSubType);","lastModifiedDate":"2023-09-19"},{"lineNumber":153,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":154,"author":{"gitId":"adhigop13"},"content":" return filteredList;","lastModifiedDate":"2023-09-19"},{"lineNumber":155,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":156,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":157,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":158,"author":{"gitId":"adhigop13"},"content":" private static ArrayList\u003cTask\u003e getTasks(ListIterator\u003cTask\u003e ls, ArrayList\u003cTask\u003e filteredList,","lastModifiedDate":"2023-09-21"},{"lineNumber":159,"author":{"gitId":"adhigop13"},"content":" String findFunctionSubType) {","lastModifiedDate":"2023-09-21"},{"lineNumber":160,"author":{"gitId":"adhigop13"},"content":" while (ls.hasNext()) {","lastModifiedDate":"2023-09-19"},{"lineNumber":161,"author":{"gitId":"adhigop13"},"content":" Task current \u003d ls.next();","lastModifiedDate":"2023-09-19"},{"lineNumber":162,"author":{"gitId":"adhigop13"},"content":" String currentTaskType \u003d current.getClass().getSimpleName();","lastModifiedDate":"2023-09-19"},{"lineNumber":163,"author":{"gitId":"adhigop13"},"content":" if (currentTaskType.contains(findFunctionSubType)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":164,"author":{"gitId":"adhigop13"},"content":" filteredList.add(current);","lastModifiedDate":"2023-09-19"},{"lineNumber":165,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":166,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":167,"author":{"gitId":"adhigop13"},"content":" return filteredList;","lastModifiedDate":"2023-09-19"},{"lineNumber":168,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":169,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":170,"author":{"gitId":"adhigop13"},"content":" public ArrayList\u003cTask\u003e getStoreTask() {","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"adhigop13"},"content":" return storeTask;","lastModifiedDate":"2023-09-08"},{"lineNumber":172,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":173,"author":{"gitId":"adhigop13"},"content":" public int getTaskSize() {","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"adhigop13"},"content":" return storeTask.size();","lastModifiedDate":"2023-09-08"},{"lineNumber":175,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":176,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":177,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":178,"author":{"gitId":"adhigop13"},"content":" * Save data string.","lastModifiedDate":"2023-09-21"},{"lineNumber":179,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":180,"author":{"gitId":"adhigop13"},"content":" * @return save msg","lastModifiedDate":"2023-09-21"},{"lineNumber":181,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":182,"author":{"gitId":"adhigop13"},"content":" public String saveData() {","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":184,"author":{"gitId":"adhigop13"},"content":" //closes file and truncates it","lastModifiedDate":"2023-09-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" //@@author adhigop13-reused","lastModifiedDate":"2023-09-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":" //Reused from ChatGPT","lastModifiedDate":"2023-09-25"},{"lineNumber":187,"author":{"gitId":"-"},"content":" //with minor modifications","lastModifiedDate":"2023-09-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Files.write(Duke.PATH_OF_DIRECTORY, new byte[0], StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2023-09-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c this.getTaskSize(); i++) {","lastModifiedDate":"2023-09-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" String taskToString \u003d this.getStoreTask().get(i).storeToDiskFormat() + \"\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Files.write(Duke.PATH_OF_DIRECTORY, taskToString.getBytes(), StandardOpenOption.APPEND);","lastModifiedDate":"2023-09-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Ui.saveDukeMsg();","lastModifiedDate":"2023-09-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2023-09-25"},{"lineNumber":195,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":196,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-21"},{"lineNumber":197,"author":{"gitId":"adhigop13"},"content":" return \"An error occurred...\";","lastModifiedDate":"2023-09-21"},{"lineNumber":198,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":199,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":200,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"-":10,"adhigop13":190}},{"path":"src/main/java/dukeuielements/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"package dukeuielements;","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.util.ListIterator;","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-20"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" * The type Ui.","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" private static final String INDENT \u003d \" \";","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * Print list string.","lastModifiedDate":"2023-09-20"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * @param ls the ls","lastModifiedDate":"2023-09-20"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" public static String printList(ListIterator\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" String listString \u003d \"Entries on memory...\" + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" while (ls.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" count++;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" listString \u003d listString + count + \".\" + ls.next().toString() + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return listString;","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" * Print number of entries string.","lastModifiedDate":"2023-09-20"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" public static String printNumberOfEntries(Task task, TaskList taskList) {","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" String printTask \u003d \"Added 1 new task\" + \"\\n\" + INDENT + task.toString() + \"\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" return printTask + \"\\n\" + \"Now you have \" + taskList.getTaskSize() + \" tasks in your task scheduler...\";","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" * Invalid date time entry string.","lastModifiedDate":"2023-09-20"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" public static String invalidDateTimeEntry() {","lastModifiedDate":"2023-09-08"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" return \"Invalid date/time entry. Please give in yyyy-mm-dd hh:mm format...\";","lastModifiedDate":"2023-09-08"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-24"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" * Invalid deadline format string.","lastModifiedDate":"2023-09-24"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-24"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" * @return Message indicating wrong format.","lastModifiedDate":"2023-09-24"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" public static String invalidDeadlineFormat() {","lastModifiedDate":"2023-09-24"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" return \"Invalid format for deadline. Please give in deadline description/yyyy-mm-dd hh:mm format...\";","lastModifiedDate":"2023-09-24"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" * Invalid event format string.","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-24"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" * @return Message indicating wrong format.","lastModifiedDate":"2023-09-24"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" public static String invalidEventFormat() {","lastModifiedDate":"2023-09-24"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" return \"Invalid format for deadline. \"","lastModifiedDate":"2023-09-24"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" + \"Please give in event description1/yyyy-mm-dd hh:mm/yyyy-mm-dd hh:mm format...\";","lastModifiedDate":"2023-09-24"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":" * Empty list string.","lastModifiedDate":"2023-09-20"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":73,"author":{"gitId":"adhigop13"},"content":" public static String emptyList() {","lastModifiedDate":"2023-09-08"},{"lineNumber":74,"author":{"gitId":"adhigop13"},"content":" return \"Duke could not find your query! Please try again...\";","lastModifiedDate":"2023-09-08"},{"lineNumber":75,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":76,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":77,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":78,"author":{"gitId":"adhigop13"},"content":" * Delete task print string.","lastModifiedDate":"2023-09-20"},{"lineNumber":79,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":80,"author":{"gitId":"adhigop13"},"content":" * @param itemRemoved the item removed","lastModifiedDate":"2023-09-20"},{"lineNumber":81,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":82,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":83,"author":{"gitId":"adhigop13"},"content":" public static String deleteTaskPrint(Task itemRemoved, TaskList taskList) {","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"adhigop13"},"content":" String removedTask \u003d \"This task was removed...\" + \"\\n\" + itemRemoved + \"\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"adhigop13"},"content":" removedTask \u003d removedTask + \"Now you have \" + taskList.getTaskSize()","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"adhigop13"},"content":" + \" tasks in your task scheduler...\";","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"adhigop13"},"content":" return removedTask;","lastModifiedDate":"2023-09-08"},{"lineNumber":88,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":89,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":90,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":91,"author":{"gitId":"adhigop13"},"content":" * Find task print string.","lastModifiedDate":"2023-09-20"},{"lineNumber":92,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":93,"author":{"gitId":"adhigop13"},"content":" * @param ls the ls","lastModifiedDate":"2023-09-20"},{"lineNumber":94,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":95,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":96,"author":{"gitId":"adhigop13"},"content":" public static String findTaskPrint(ListIterator\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-08"},{"lineNumber":97,"author":{"gitId":"adhigop13"},"content":" String findString \u003d \"Tasks that may match your search result...\" + \"\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"adhigop13"},"content":" findString +\u003d printList(ls);","lastModifiedDate":"2023-09-08"},{"lineNumber":99,"author":{"gitId":"adhigop13"},"content":" return findString;","lastModifiedDate":"2023-09-08"},{"lineNumber":100,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":101,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":102,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":103,"author":{"gitId":"adhigop13"},"content":" * Mark task","lastModifiedDate":"2023-09-21"},{"lineNumber":104,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":105,"author":{"gitId":"adhigop13"},"content":" * @param task the task","lastModifiedDate":"2023-09-21"},{"lineNumber":106,"author":{"gitId":"adhigop13"},"content":" * @return the string representation of marked task","lastModifiedDate":"2023-09-21"},{"lineNumber":107,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":108,"author":{"gitId":"adhigop13"},"content":" public static String markStringReturn(Task task) {","lastModifiedDate":"2023-09-21"},{"lineNumber":109,"author":{"gitId":"adhigop13"},"content":" if (!task.getTaskStatus()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":110,"author":{"gitId":"adhigop13"},"content":" task.setFalseStatus();","lastModifiedDate":"2023-09-21"},{"lineNumber":111,"author":{"gitId":"adhigop13"},"content":" return \"Nice! Task completed successfully!\" + \"\\n\" + INDENT + task;","lastModifiedDate":"2023-09-21"},{"lineNumber":112,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"adhigop13"},"content":" return \"Task already checked. Please try again...\" + \"\\n\" + INDENT + task;","lastModifiedDate":"2023-09-21"},{"lineNumber":114,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":115,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":116,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":117,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":118,"author":{"gitId":"adhigop13"},"content":" * Unmark task","lastModifiedDate":"2023-09-21"},{"lineNumber":119,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":120,"author":{"gitId":"adhigop13"},"content":" * @param task the task","lastModifiedDate":"2023-09-21"},{"lineNumber":121,"author":{"gitId":"adhigop13"},"content":" * @return the string representation of unmarked task","lastModifiedDate":"2023-09-21"},{"lineNumber":122,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":123,"author":{"gitId":"adhigop13"},"content":" public static String unmarkStringReturn(Task task) {","lastModifiedDate":"2023-09-21"},{"lineNumber":124,"author":{"gitId":"adhigop13"},"content":" if (!task.getTaskStatus()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":125,"author":{"gitId":"adhigop13"},"content":" return \"Task already unmarked! Please try again...\" + \"\\n\" + INDENT + task;","lastModifiedDate":"2023-09-21"},{"lineNumber":126,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-21"},{"lineNumber":127,"author":{"gitId":"adhigop13"},"content":" task.setFalseStatus();","lastModifiedDate":"2023-09-21"},{"lineNumber":128,"author":{"gitId":"adhigop13"},"content":" return \"Sure! Task status unchecked!\" + \"\\n\" + INDENT + task;","lastModifiedDate":"2023-09-21"},{"lineNumber":129,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":130,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":131,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":132,"author":{"gitId":"adhigop13"},"content":" * End duke msg string.","lastModifiedDate":"2023-09-20"},{"lineNumber":133,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":134,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":135,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":136,"author":{"gitId":"adhigop13"},"content":" public static String saveDukeMsg() {","lastModifiedDate":"2023-09-21"},{"lineNumber":137,"author":{"gitId":"adhigop13"},"content":" return \"Tasks have been saved to disk!\";","lastModifiedDate":"2023-09-21"},{"lineNumber":138,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":139}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" * This class encapsulates a Deadline.","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" private String deadlineBy;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime deadlineInDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Deadline.","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" * @param description the Deadline description","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * @param deadlineBy deadline by time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" public Deadline(String description, String deadlineBy) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" this.deadlineBy \u003d deadlineBy;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" this.deadlineInDateTime \u003d formatDateAndTime(deadlineBy);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Deadline.","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" * @param status the status","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" * @param description the Deadline description","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" * @param deadlineBy deadline by time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" public Deadline(int status, String description, String deadlineBy) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" super(description, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" this.deadlineBy \u003d deadlineBy;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" this.deadlineInDateTime \u003d formatDateAndTime(deadlineBy);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" return \"D\" + \"|\" + this.diskStatus() + \"|\" + this.getDescription() + \"|\" + this.deadlineBy;","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" return \"[D] \" + super.toString() + \" (by: \" + printDateTimeFormat(deadlineInDateTime) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":52}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" * This class encapsulates an Event","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" private String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" private String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime fromDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime toDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Event.","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * @param description the Event description","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" * @param from the from time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * @param to the to time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" this.fromDateTime \u003d formatDateAndTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" this.toDateTime \u003d formatDateAndTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Event.","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" * @param status the status","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" * @param description the Event description","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" * @param from the from time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" * @param to the to time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" public Event(int status, String description, String from, String to) {","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" super(description, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" this.fromDateTime \u003d formatDateAndTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" this.toDateTime \u003d formatDateAndTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" return \"E\" + \"|\" + this.diskStatus() + \"|\" + this.getDescription() + \"|\" + this.from + \"|\" + this.to;","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" return \"[E] \" + super.toString() + \" (from: \"","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" + printDateTimeFormat(this.fromDateTime) + \" to: \" + printDateTimeFormat(this.toDateTime) + \")\";","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":60}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import dukeuielements.Ui;","lastModifiedDate":"2023-09-20"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" * This class encapsulates a Task.","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" private String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" private boolean isTrueStatus;","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Task.","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" * @param description the description","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" this.isTrueStatus \u003d false;","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Task.","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" * @param description the description","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" * @param status the status","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" public Task(String description, boolean status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" this.isTrueStatus \u003d status;","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" * Returns task complete/incomplete message based on user input.","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" * @param userInput mark/unmark which specifies the command.","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" public String changeStatus(String userInput) throws DukeException {","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" switch (userInput) {","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" case \"mark\":","lastModifiedDate":"2023-09-16"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" return Ui.markStringReturn(this);","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" return Ui.unmarkStringReturn(this);","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" default:","lastModifiedDate":"2023-09-16"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"Unknown error occurred!\");","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" * Returns date and time as a LocalDateTime parsed from user input yyyy-MM-dd HH:mm.","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" * @param userDateAndTime User provided date and time.","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" * @return Parsed date and time in yyyy-MM-dd HH:mm.","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" * @throws DateTimeParseException If user input does not follow required format.","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":" public LocalDateTime formatDateAndTime(String userDateAndTime) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":" return LocalDateTime.parse(userDateAndTime, inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"adhigop13"},"content":" * Returns date and time as a String parsed from LocalDateTime variable yyyy-MM-dd HH:mm.","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"adhigop13"},"content":" * @param systemDateAndTime LocalDateTime value stored on disk.","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"adhigop13"},"content":" * @return String type Date and time in MMM dd, yyyy HH:mm format.","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"adhigop13"},"content":" public String printDateTimeFormat(LocalDateTime systemDateAndTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"adhigop13"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd, yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"adhigop13"},"content":" return systemDateAndTime.format(outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"adhigop13"},"content":" * Gets status.","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"adhigop13"},"content":" * @return the status","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"adhigop13"},"content":" public int diskStatus() {","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"adhigop13"},"content":" return this.isTrueStatus ? 1 : 0;","lastModifiedDate":"2023-09-21"},{"lineNumber":92,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"adhigop13"},"content":" public boolean getTaskStatus() {","lastModifiedDate":"2023-09-21"},{"lineNumber":94,"author":{"gitId":"adhigop13"},"content":" return this.isTrueStatus;","lastModifiedDate":"2023-09-21"},{"lineNumber":95,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":96,"author":{"gitId":"adhigop13"},"content":" public void setFalseStatus() {","lastModifiedDate":"2023-09-21"},{"lineNumber":97,"author":{"gitId":"adhigop13"},"content":" this.isTrueStatus \u003d !this.isTrueStatus;","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":99,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":100,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":101,"author":{"gitId":"adhigop13"},"content":" * Gets description.","lastModifiedDate":"2023-09-21"},{"lineNumber":102,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":103,"author":{"gitId":"adhigop13"},"content":" * @return the description","lastModifiedDate":"2023-09-21"},{"lineNumber":104,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":105,"author":{"gitId":"adhigop13"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"adhigop13"},"content":" return this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"adhigop13"},"content":" * Returns a String to store Task on Duke.txt file.","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"adhigop13"},"content":" * @return String to store Task on Duke.txt file.","lastModifiedDate":"2023-09-02"},{"lineNumber":113,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":114,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"adhigop13"},"content":" return this.diskStatus() + \"|\" + this.description;","lastModifiedDate":"2023-09-21"},{"lineNumber":116,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"adhigop13"},"content":" if (this.diskStatus() \u003d\u003d 1) {","lastModifiedDate":"2023-09-21"},{"lineNumber":121,"author":{"gitId":"adhigop13"},"content":" return \"[\" + \"X\" + \"] \" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"adhigop13"},"content":" return \"[\" + \" \" + \"] \" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":126}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":" * This class encapsulates a ToDo.","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" public ToDo(int status, String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" super(description, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" return \"T\" + \"|\" + this.diskStatus() + \"|\" + this.getDescription();","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":30}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"-Infinity\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" \u003cLabel fx:id\u003d\"dialog\" maxHeight\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" style\u003d\"-fx-label-padding: 10; -fx-background-radius: 15; -fx-background-color: #80b1ff;\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"adhigop13":16}},{"path":"src/main/resources/view/DukeReplyDialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"-Infinity\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" \u003cLabel fx:id\u003d\"dialog\" maxHeight\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" style\u003d\"-fx-label-padding: 10; -fx-background-radius: 15; -fx-background-color: #90ee90;\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"adhigop13":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"601.0\" prefWidth\u003d\"401.0\" style\u003d\"-fx-background-color: #c4c976;\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\"\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutX\u003d\"14.0\" layoutY\u003d\"564.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"33.0\" prefWidth\u003d\"303.0\" style\u003d\"-fx-background-radius: 15;\" AnchorPane.bottomAnchor\u003d\"11.0\" /\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"331.0\" layoutY\u003d\"556.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"33.0\" prefWidth\u003d\"55.0\" style\u003d\"-fx-background-radius: 15;\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" opacity\u003d\"0.91\" prefHeight\u003d\"547.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" maxHeight\u003d\"-Infinity\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"adhigop13":19}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" public void parse_invalidInput_exceptionThrown() throws DukeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" Parser parser \u003d new Parser(taskList);","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" parser.parse(\"1234\");","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"No enum constant duke.Parser.TaskKeyVal.1234\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" public void parse_emptyInput_exceptionThrown() throws DukeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" Parser parser \u003d new Parser(taskList);","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" parser.parse(\"\");","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"No enum constant duke.Parser.TaskKeyVal.\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" public void parse_missingArgument_dukeExceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" Parser parser \u003d new Parser(taskList);","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" parser.parse(\"delete\");","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" assertEquals(\" ☹ OOPS!!! The description of a task cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" public void parse_singleArgumentOperations_success() {","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" Parser parser \u003d new Parser(taskList);","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" parser.parse(\"list\");","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" });","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":47}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" public void deleteTask_negativeInput_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" taskList.deleteTask(-1231);","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"Invalid Task entered. Please try again...\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" public void findTask_itemNotInList_printEmptyListWithUi() {","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"Duke could not find your query! Please try again...\", taskList.findTask(\"//-\u003d./;\u0027#%^2\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" public void deleteTask_emptyList_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" taskList.deleteTask(1);","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"Task Scheduler is empty... Please try again!\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" public void deleteTask_singleElementList_success() {","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" taskList.addToDo(\"Dummy event\");","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" taskList.deleteTask(1);","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" });","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" public void findTask_itemInList_success() {","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" taskList.addToDo(\"Dummy event\");","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" taskList.findTask(\"D\");","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" });","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":50}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"ToDo play football","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"Deadline finish hw/10pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"Event attend lecture/2pm/4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":11}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"pause","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"-":21,"adhigop13":1}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"checkstyle {","lastModifiedDate":"2023-09-14"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter-api:5.8.1\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" testRuntimeOnly \u0027org.junit.jupiter:junit-jupiter-engine:5.8.1\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":"jar {","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" manifest {","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" attributes(","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" \u0027Main-Class\u0027: \u0027duke.Launcher\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" )","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":"mainClassName \u003d \u0027duke.Launcher\u0027","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"-":41,"adhigop13":31}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"D|0|finish project|2023-12-12 01:12","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"E|0|travel|2023-12-12 00:00|2023-12-31 00:00","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"E|1|travel|2023-12-12 00:00|2023-12-31 00:00","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"D|1|finish project|2023-12-12 01:12","lastModifiedDate":"2023-09-24"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"T|0|add","lastModifiedDate":"2023-09-24"}],"authorContributionMap":{"adhigop13":5}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# User Guide","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"Tom is a lightweight application to schedule and manage tasks. It is very fast and efficient. Can be distributed as a tiny .jar file!","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"### Feature - Add ToDo","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"\u003e #### todo ","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"A todo is a task that has a description, but no deadlines","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"**Usage** - `todo {task description}`","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"`todo finish homework`","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"![todo.png](images/todo.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"### Feature - Add deadlines","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":"\u003e#### deadline","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":"A deadline is a task that has a description and a deadline.","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":"**Usage** - `deadline {description/deadline}`","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":"`deadline finish project/2023-12-12 01:12`","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":"![deadline.png](images/deadline.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"### Feature - Add events","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"\u003e#### event","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":"An event is a task that has a description, from date and to date.","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":"**Usage** - `event {description/from/to}`","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":"`event travel/2023-12-12 00:00/2023-12-31 00:00`","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":"![event.png](images/event.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":"### Feature - Find tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":"\u003e#### find","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":"find function can index any task that may or may not contain the full keyword. It is flexible with inputs.","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":"**Usage** - `find {description}`","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":"`find travel` or `find tra` ","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":"![find.png](images/find.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"adhigop13"},"content":"### Feature - list tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"adhigop13"},"content":"\u003e#### list","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"adhigop13"},"content":"list function prints out all the tasks on memory.","lastModifiedDate":"2023-09-21"},{"lineNumber":80,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"adhigop13"},"content":"**Usage** - `list`","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"adhigop13"},"content":"`list`","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"adhigop13"},"content":"![list.png](images/list.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"adhigop13"},"content":"### Feature - Delete tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":94,"author":{"gitId":"adhigop13"},"content":"\u003e#### delete","lastModifiedDate":"2023-09-21"},{"lineNumber":95,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":96,"author":{"gitId":"adhigop13"},"content":"delete function can delete any task based on the item number.","lastModifiedDate":"2023-09-21"},{"lineNumber":97,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"adhigop13"},"content":"**Usage** - `delete {item number}`","lastModifiedDate":"2023-09-21"},{"lineNumber":99,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":100,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":101,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":102,"author":{"gitId":"adhigop13"},"content":"`delete 1`","lastModifiedDate":"2023-09-21"},{"lineNumber":103,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":104,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":105,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":106,"author":{"gitId":"adhigop13"},"content":"![delete.png](images/delete.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":108,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"adhigop13"},"content":"### Feature - mark tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":111,"author":{"gitId":"adhigop13"},"content":"\u003e#### mark","lastModifiedDate":"2023-09-21"},{"lineNumber":112,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"adhigop13"},"content":"mark function can mark any task (with an X) based on the item number.","lastModifiedDate":"2023-09-21"},{"lineNumber":114,"author":{"gitId":"adhigop13"},"content":"Tasks that are already marked, cannot be marked again.","lastModifiedDate":"2023-09-21"},{"lineNumber":115,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":116,"author":{"gitId":"adhigop13"},"content":"**Usage** - `mark {item number}`","lastModifiedDate":"2023-09-21"},{"lineNumber":117,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":118,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":119,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":120,"author":{"gitId":"adhigop13"},"content":"`mark 1`","lastModifiedDate":"2023-09-21"},{"lineNumber":121,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":122,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":123,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":124,"author":{"gitId":"adhigop13"},"content":"![mark.png](images/mark.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":126,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"adhigop13"},"content":"### Feature - unmark tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":129,"author":{"gitId":"adhigop13"},"content":"\u003e#### unmark","lastModifiedDate":"2023-09-21"},{"lineNumber":130,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":131,"author":{"gitId":"adhigop13"},"content":"unmark function can mark any task (with an X) based on the item number.","lastModifiedDate":"2023-09-21"},{"lineNumber":132,"author":{"gitId":"adhigop13"},"content":"Tasks that are already unmarked, cannot be unmarked again.","lastModifiedDate":"2023-09-21"},{"lineNumber":133,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":134,"author":{"gitId":"adhigop13"},"content":"**Usage** - `unmark {item number}`","lastModifiedDate":"2023-09-21"},{"lineNumber":135,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":136,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":137,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":138,"author":{"gitId":"adhigop13"},"content":"`unmark 1`","lastModifiedDate":"2023-09-21"},{"lineNumber":139,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":140,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":141,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":142,"author":{"gitId":"adhigop13"},"content":"![unmark.png](images/unmark.png)","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":144,"author":{"gitId":"adhigop13"},"content":"\u003cbr /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":146,"author":{"gitId":"adhigop13"},"content":"### Feature - save tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":147,"author":{"gitId":"adhigop13"},"content":"\u003e#### save","lastModifiedDate":"2023-09-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":149,"author":{"gitId":"adhigop13"},"content":"save function can save all the actions committed since application opening.","lastModifiedDate":"2023-09-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":151,"author":{"gitId":"adhigop13"},"content":"**Usage** - `save`","lastModifiedDate":"2023-09-21"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":153,"author":{"gitId":"adhigop13"},"content":"**For example:**","lastModifiedDate":"2023-09-21"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":155,"author":{"gitId":"adhigop13"},"content":"`save`","lastModifiedDate":"2023-09-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":157,"author":{"gitId":"adhigop13"},"content":"**Expected Output:**","lastModifiedDate":"2023-09-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":159,"author":{"gitId":"adhigop13"},"content":"![save.png](images/save.png)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"-":21,"adhigop13":138}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-08"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-16"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-08"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-16"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-16"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-16"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-16"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-16"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" private Label dialog;","lastModifiedDate":"2023-09-16"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-16"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-16"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-16"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-16"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-16"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-16"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-16"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-16"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-16"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-16"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-16"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" DialogBox db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" return db;","lastModifiedDate":"2023-09-08"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-08"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"adhigop13":42}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" * The type Duke.","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"public class Duke {","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" public static final Path PATH_OF_DIRECTORY \u003d Paths.get(\"./data/duke.txt\");","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" private TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Duke.","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" public Duke() {","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" Storage.readFromDisk(PATH_OF_DIRECTORY, taskList.getStoreTask());","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-16"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" Parser parserObject \u003d new Parser(taskList);","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" String dukeResponse \u003d parserObject.parse(input);","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" assert dukeResponse !\u003d null;","lastModifiedDate":"2023-09-15"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return dukeResponse;","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-08"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-08"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" return \"Invalid character input\";","lastModifiedDate":"2023-09-16"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" return \"Invalid entry / Task not in list... Please try again...\";","lastModifiedDate":"2023-09-16"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" return \"OOPS!!! Sorry, but i do not know what that means :-(\";","lastModifiedDate":"2023-09-08"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"adhigop13":41}},{"path":"src/main/java/duke/DukeDialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"public class DukeDialogBox extends HBox {","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" private Label dialog;","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" private DukeDialogBox(String text, Image img) {","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DukeReplyDialogBox.fxml\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" private void flip() {","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" public static DukeDialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" var db \u003d new DukeDialogBox(text, img);","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" db.flip();","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" return db;","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" * Greeting dialog box.","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" * @param iv the image to be displayed in the greeting box.","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" * @return the dialog box.","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" public static DukeDialogBox greetingDialogBox(Image iv) {","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" String greeting \u003d \"Welcome! I am Tom!\";","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" var duke \u003d new DukeDialogBox(greeting, iv);","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" duke.flip();","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" return duke;","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"adhigop13":70}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":" * The type Duke exception.","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"adhigop13":10}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-08"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-08"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" * Entry point to Duke program","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"public class Launcher {","lastModifiedDate":"2023-09-08"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-08"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-08"}],"authorContributionMap":{"adhigop13":12}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-16"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-16"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-16"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-16"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-16"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-16"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-16"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-16"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-16"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-09-16"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-16"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-16"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-16"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-16"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-16"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-16"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" stage.setTitle(\"Tom!\");","lastModifiedDate":"2023-09-24"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" stage.show();","lastModifiedDate":"2023-09-16"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-16"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-16"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"adhigop13":32}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-16"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-16"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-16"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-16"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-16"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-16"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-16"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-16"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-16"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-16"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-16"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" private Duke duke;","lastModifiedDate":"2023-09-16"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" private final Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" private final Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" * Initialize.","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" public void initialize() {","lastModifiedDate":"2023-09-16"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-16"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" dialogContainer.getChildren().add(DukeDialogBox.greetingDialogBox(dukeImage));","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-16"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-16"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-16"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-16"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-16"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-16"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" @FXML","lastModifiedDate":"2023-09-16"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-16"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-16"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-16"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" DukeDialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" );","lastModifiedDate":"2023-09-16"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" userInput.clear();","lastModifiedDate":"2023-09-16"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"adhigop13":55}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":" * This class deals with making sense of the user input and carrying out tasks accordingly.","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":" private enum TaskKeyVal { todo, deadline, event, delete, mark, unmark, save, list, find }","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" private enum SingleOperandTasks { save, list }","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" private TaskList parseTaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" public Parser(TaskList taskList) {","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" parseTaskList \u003d taskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * Returns a boolean based on the user input choice.","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" * bye -\u003e initiates user exit.","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * list -\u003e lists all the tasks.","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" * mark -\u003e mark the task.","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" * unmark -\u003e unmark the task.","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" * ToDo -\u003e creates a new ToDo and adds to task list.","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" * Deadline -\u003e creates a new Deadline and adds to task list.","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" * Event -\u003e creates a new Event and adds to task list.","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" * Delete -\u003e Deletes task at given number.","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" * find -\u003e Finds task based on a certain keyword.","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" * @param userInput String value provided to be made sense of and carry task.","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" * @return returns string value received after processing the task.","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" * @throws DukeException when incorrect / invalid input is entered.","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" public String parse(String userInput) throws DukeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" String[] userInputList \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" assert userInputList !\u003d null;","lastModifiedDate":"2023-09-15"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" String userTaskChoiceKey \u003d userInputList[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" //Stores enum value. might throw exception if invalid input entered.","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" TaskKeyVal taskKeyVal \u003d TaskKeyVal.valueOf(userTaskChoiceKey);","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" return getString(userInputList, userTaskChoiceKey, taskKeyVal);","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" private String getString(String[] userInputList, String userTaskChoiceKey, TaskKeyVal taskKeyVal)","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" throws DukeException {","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" if (userInputList.length \u003d\u003d 1 \u0026\u0026 enumCheck(userTaskChoiceKey)) {","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\" ☹ OOPS!!! The description of a task cannot be empty.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" switch (taskKeyVal) {","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" case save:","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.saveData();","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" case list:","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.userListChoice();","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" case mark:","lastModifiedDate":"2023-09-16"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" case unmark:","lastModifiedDate":"2023-09-16"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" String userMarkerChoice \u003d userInputList[1];","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.userMarkUnmark(userMarkerChoice, userTaskChoiceKey);","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" case todo:","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.addToDo(userInputList[1]);","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" case deadline:","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" //String[] deadlineList \u003d userInputList[1].split(\"/\", 2);","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.addDeadline(userInputList);","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" case event:","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" //String[] eventList \u003d userInputList[1].split(\"/\", 3);","lastModifiedDate":"2023-09-24"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.addEvent(userInputList);","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" case delete:","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" Integer delUserChoice \u003d Integer.parseInt(userInputList[1]);","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" return parseTaskList.deleteTask(delUserChoice);","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" case find:","lastModifiedDate":"2023-09-16"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" String findThis \u003d userInputList[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" return this.parseTaskList.findTask(findThis);","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":" default:","lastModifiedDate":"2023-09-16"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"OOPS!!! Sorry, but i do not know what that means :-(\");","lastModifiedDate":"2023-09-08"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":73,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":74,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"adhigop13"},"content":" private static boolean enumCheck(String input) {","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"adhigop13"},"content":" for (SingleOperandTasks taskKey : SingleOperandTasks.values()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"adhigop13"},"content":" if (taskKey.name().equalsIgnoreCase(input)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":79,"author":{"gitId":"adhigop13"},"content":" return false;","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":81,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"adhigop13"},"content":" return true;","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":85}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import java.util.List;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"import task.Event;","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"import task.Task;","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-20"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * This class handles the data reads from Duke.txt file to load tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"public class Storage {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" * Reads data from file and loads into ArrayList if available. Else creates the file.","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" * @param pathOfDirectory Path variable provided","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" * @param storeTask ArrayList which stores tasks when program is running","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" * @throws IOException if an I/O error occurs","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" public static void readFromDisk(Path pathOfDirectory, ArrayList\u003cTask\u003e storeTask) throws IOException {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" Files.createDirectories(pathOfDirectory.getParent());","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" handleFileAccess(pathOfDirectory, storeTask);","lastModifiedDate":"2023-09-16"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" private static void handleFileAccess(Path pathOfDirectory, ArrayList\u003cTask\u003e storeTask) throws IOException {","lastModifiedDate":"2023-09-16"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" if (Files.exists(pathOfDirectory)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" readFromFile(pathOfDirectory, storeTask);","lastModifiedDate":"2023-09-16"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-16"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" createNewFile(pathOfDirectory);","lastModifiedDate":"2023-09-16"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" private static void readFromFile(Path pathOfDirectory, ArrayList\u003cTask\u003e storeTask) throws IOException {","lastModifiedDate":"2023-09-16"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" List\u003cString\u003e fileLines \u003d Files.readAllLines(pathOfDirectory);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" for (String task : fileLines) {","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" //since \"|\" is a special character, use \"//\"","lastModifiedDate":"2023-09-16"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" String[] taskVariablesTemp \u003d task.split(\"\\\\|\");","lastModifiedDate":"2023-09-16"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" handleTaskTypes(taskVariablesTemp, storeTask);","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" private static void handleTaskTypes(String[] taskVariablesTemp, ArrayList\u003cTask\u003e storeTask) {","lastModifiedDate":"2023-09-16"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" String taskType \u003d taskVariablesTemp[0];","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" switch(taskType) {","lastModifiedDate":"2023-09-16"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" case \"T\":","lastModifiedDate":"2023-09-16"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new ToDo(Integer.parseInt(taskVariablesTemp[1]), taskVariablesTemp[2]));","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" break;","lastModifiedDate":"2023-09-16"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" case \"D\":","lastModifiedDate":"2023-09-16"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new Deadline(","lastModifiedDate":"2023-09-20"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" Integer.parseInt(taskVariablesTemp[1]), taskVariablesTemp[2], taskVariablesTemp[3]));","lastModifiedDate":"2023-09-20"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" break;","lastModifiedDate":"2023-09-16"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" case \"E\":","lastModifiedDate":"2023-09-16"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" storeTask.add(new Event(Integer.parseInt(","lastModifiedDate":"2023-09-20"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" taskVariablesTemp[1]), taskVariablesTemp[2], taskVariablesTemp[3], taskVariablesTemp[4]));","lastModifiedDate":"2023-09-20"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" break;","lastModifiedDate":"2023-09-16"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" default:","lastModifiedDate":"2023-09-16"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" throw new IllegalStateException(\"Unexpected value: \" + taskType);","lastModifiedDate":"2023-09-16"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" private static void createNewFile(Path pathOfDirectory) throws IOException {","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" Files.createFile(pathOfDirectory);","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":66}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import java.util.ListIterator;","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"import dukeuielements.Ui;","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"import task.Deadline;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"import task.Event;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"import task.Task;","lastModifiedDate":"2023-09-20"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"import task.ToDo;","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * This class holds the ArrayList to load all the tasks. Contains important Task manipulation methods.","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":"public class TaskList {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" //stores all the tasks","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" private ArrayList\u003cTask\u003e storeTask \u003d new ArrayList\u003c\u003e(1);","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" * Displays the entire list of tasks to user.","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" public String userListChoice() {","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" ListIterator\u003cTask\u003e ls \u003d storeTask.listIterator();","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return Ui.printList(ls);","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" * Mark or unmark the task.","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" * @param taskNumber The task number to be marked/unmarked.","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" * @param userMarkerChoice User choice mark/unmark.","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" public String userMarkUnmark(String taskNumber, String userMarkerChoice) throws DukeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" Task taskItem \u003d storeTask.get(Integer.parseInt(taskNumber) - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" return taskItem.changeStatus(userMarkerChoice);","lastModifiedDate":"2023-09-16"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" * Adds task with given description to ArrayList.","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" * @param userDescription Description attached to task.","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" public String addToDo(String userDescription) {","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" ToDo td \u003d new ToDo(userDescription);","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" storeTask.add(td);","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" return Ui.printNumberOfEntries(td, this);","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" * Adds a new Deadline task to ArrayList.","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" * @param userInputList list that contains the user input.","lastModifiedDate":"2023-09-24"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" public String addDeadline(String[] userInputList) {","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" String[] deadlineList \u003d userInputList[1].split(\"/\", 2);","lastModifiedDate":"2023-09-24"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" String userDescription \u003d deadlineList[0];","lastModifiedDate":"2023-09-24"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" String deadlineBy \u003d deadlineList[1];","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" Deadline deadline \u003d new Deadline(userDescription, deadlineBy);","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" storeTask.add(deadline);","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" return Ui.printNumberOfEntries(deadline, this);","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" } catch (DateTimeParseException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" return Ui.invalidDeadlineFormat();","lastModifiedDate":"2023-09-24"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":" * Adds a new Deadline task to ArrayList.","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"adhigop13"},"content":" * @param userInputList list that contains the user input.","lastModifiedDate":"2023-09-24"},{"lineNumber":75,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"adhigop13"},"content":" public String addEvent(String[] userInputList) {","lastModifiedDate":"2023-09-24"},{"lineNumber":77,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"adhigop13"},"content":" String[] eventList \u003d userInputList[1].split(\"/\", 3);","lastModifiedDate":"2023-09-24"},{"lineNumber":79,"author":{"gitId":"adhigop13"},"content":" String userDescription \u003d eventList[0];","lastModifiedDate":"2023-09-24"},{"lineNumber":80,"author":{"gitId":"adhigop13"},"content":" String from \u003d eventList[1];","lastModifiedDate":"2023-09-24"},{"lineNumber":81,"author":{"gitId":"adhigop13"},"content":" String to \u003d eventList[2];","lastModifiedDate":"2023-09-24"},{"lineNumber":82,"author":{"gitId":"adhigop13"},"content":" Event event \u003d new Event(userDescription, from, to);","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"adhigop13"},"content":" storeTask.add(event);","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"adhigop13"},"content":" return Ui.printNumberOfEntries(event, this);","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"adhigop13"},"content":" } catch (DateTimeParseException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":86,"author":{"gitId":"adhigop13"},"content":" return Ui.invalidEventFormat();","lastModifiedDate":"2023-09-24"},{"lineNumber":87,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"adhigop13"},"content":" * Deletes task from ArrayList.","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"adhigop13"},"content":" * @param delUserChoice The task number to be deleted (based on number on list).","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"adhigop13"},"content":" * @throws DukeException If TaskList is empty or invalid selection by user.","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"adhigop13"},"content":" public String deleteTask(int delUserChoice) throws DukeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"adhigop13"},"content":" if ((delUserChoice - 1) \u003c 0) { //if number entered smaller than 1, array will go negative index.","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"Invalid Task entered. Please try again...\");","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"adhigop13"},"content":" } else if (storeTask.isEmpty()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"Task Scheduler is empty... Please try again!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"adhigop13"},"content":" Task itemRemoved \u003d storeTask.remove(delUserChoice - 1);","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"adhigop13"},"content":" return Ui.deleteTaskPrint(itemRemoved, this);","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":107,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":108,"author":{"gitId":"adhigop13"},"content":" * Find task string.","lastModifiedDate":"2023-09-21"},{"lineNumber":109,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":110,"author":{"gitId":"adhigop13"},"content":" * @param findThis user input given with find function","lastModifiedDate":"2023-09-21"},{"lineNumber":111,"author":{"gitId":"adhigop13"},"content":" * @return filtered list","lastModifiedDate":"2023-09-21"},{"lineNumber":112,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"adhigop13"},"content":" public String findTask(String findThis) {","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"adhigop13"},"content":" ArrayList\u003cTask\u003e filteredList \u003d altFindFunctions(findThis);","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"adhigop13"},"content":" ListIterator\u003cTask\u003e iterFilteredList \u003d filteredList.listIterator();","lastModifiedDate":"2023-09-19"},{"lineNumber":116,"author":{"gitId":"adhigop13"},"content":" if (filteredList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-19"},{"lineNumber":117,"author":{"gitId":"adhigop13"},"content":" return Ui.emptyList();","lastModifiedDate":"2023-09-19"},{"lineNumber":118,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-19"},{"lineNumber":119,"author":{"gitId":"adhigop13"},"content":" return Ui.findTaskPrint(iterFilteredList);","lastModifiedDate":"2023-09-19"},{"lineNumber":120,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":121,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":122,"author":{"gitId":"adhigop13"},"content":" private ArrayList\u003cTask\u003e altFindFunctions(String findThis) {","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"adhigop13"},"content":" String[] breakDownFindFunction \u003d findThis.split(\" \");","lastModifiedDate":"2023-09-19"},{"lineNumber":124,"author":{"gitId":"adhigop13"},"content":" ListIterator\u003cTask\u003e ls \u003d storeTask.listIterator();","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"adhigop13"},"content":" ArrayList\u003cTask\u003e filteredList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":126,"author":{"gitId":"adhigop13"},"content":" switch (breakDownFindFunction.length) {","lastModifiedDate":"2023-09-19"},{"lineNumber":127,"author":{"gitId":"adhigop13"},"content":" case 1:","lastModifiedDate":"2023-09-19"},{"lineNumber":128,"author":{"gitId":"adhigop13"},"content":" return normalFind(findThis, ls, filteredList);","lastModifiedDate":"2023-09-19"},{"lineNumber":129,"author":{"gitId":"adhigop13"},"content":" case 2:","lastModifiedDate":"2023-09-19"},{"lineNumber":130,"author":{"gitId":"adhigop13"},"content":" return taskFind(breakDownFindFunction, ls, filteredList);","lastModifiedDate":"2023-09-19"},{"lineNumber":131,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":132,"author":{"gitId":"adhigop13"},"content":" default:","lastModifiedDate":"2023-09-19"},{"lineNumber":133,"author":{"gitId":"adhigop13"},"content":" return filteredList;","lastModifiedDate":"2023-09-19"},{"lineNumber":134,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":135,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":136,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":137,"author":{"gitId":"adhigop13"},"content":" private static ArrayList\u003cTask\u003e normalFind(String findThis, ListIterator\u003cTask\u003e ls, ArrayList\u003cTask\u003e filteredList) {","lastModifiedDate":"2023-09-19"},{"lineNumber":138,"author":{"gitId":"adhigop13"},"content":" while (ls.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"adhigop13"},"content":" Task current \u003d ls.next();","lastModifiedDate":"2023-09-02"},{"lineNumber":140,"author":{"gitId":"adhigop13"},"content":" String currentDescription \u003d current.getDescription();","lastModifiedDate":"2023-09-02"},{"lineNumber":141,"author":{"gitId":"adhigop13"},"content":" if (currentDescription.contains(findThis)) {","lastModifiedDate":"2023-09-02"},{"lineNumber":142,"author":{"gitId":"adhigop13"},"content":" filteredList.add(current);","lastModifiedDate":"2023-09-02"},{"lineNumber":143,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":144,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":145,"author":{"gitId":"adhigop13"},"content":" return filteredList;","lastModifiedDate":"2023-09-19"},{"lineNumber":146,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":147,"author":{"gitId":"adhigop13"},"content":" private static ArrayList\u003cTask\u003e taskFind(String[] breakDownFindFunction, ListIterator\u003cTask\u003e ls,","lastModifiedDate":"2023-09-21"},{"lineNumber":148,"author":{"gitId":"adhigop13"},"content":" ArrayList\u003cTask\u003e filteredList) {","lastModifiedDate":"2023-09-21"},{"lineNumber":149,"author":{"gitId":"adhigop13"},"content":" String findFunctionMainType \u003d breakDownFindFunction[0];","lastModifiedDate":"2023-09-19"},{"lineNumber":150,"author":{"gitId":"adhigop13"},"content":" String findFunctionSubType \u003d breakDownFindFunction[1];","lastModifiedDate":"2023-09-19"},{"lineNumber":151,"author":{"gitId":"adhigop13"},"content":" if (findFunctionMainType.equals(\"all\")) {","lastModifiedDate":"2023-09-19"},{"lineNumber":152,"author":{"gitId":"adhigop13"},"content":" return getTasks(ls, filteredList, findFunctionSubType);","lastModifiedDate":"2023-09-19"},{"lineNumber":153,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":154,"author":{"gitId":"adhigop13"},"content":" return filteredList;","lastModifiedDate":"2023-09-19"},{"lineNumber":155,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":156,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":157,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":158,"author":{"gitId":"adhigop13"},"content":" private static ArrayList\u003cTask\u003e getTasks(ListIterator\u003cTask\u003e ls, ArrayList\u003cTask\u003e filteredList,","lastModifiedDate":"2023-09-21"},{"lineNumber":159,"author":{"gitId":"adhigop13"},"content":" String findFunctionSubType) {","lastModifiedDate":"2023-09-21"},{"lineNumber":160,"author":{"gitId":"adhigop13"},"content":" while (ls.hasNext()) {","lastModifiedDate":"2023-09-19"},{"lineNumber":161,"author":{"gitId":"adhigop13"},"content":" Task current \u003d ls.next();","lastModifiedDate":"2023-09-19"},{"lineNumber":162,"author":{"gitId":"adhigop13"},"content":" String currentTaskType \u003d current.getClass().getSimpleName();","lastModifiedDate":"2023-09-19"},{"lineNumber":163,"author":{"gitId":"adhigop13"},"content":" if (currentTaskType.contains(findFunctionSubType)) {","lastModifiedDate":"2023-09-19"},{"lineNumber":164,"author":{"gitId":"adhigop13"},"content":" filteredList.add(current);","lastModifiedDate":"2023-09-19"},{"lineNumber":165,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":166,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":167,"author":{"gitId":"adhigop13"},"content":" return filteredList;","lastModifiedDate":"2023-09-19"},{"lineNumber":168,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":169,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":170,"author":{"gitId":"adhigop13"},"content":" public ArrayList\u003cTask\u003e getStoreTask() {","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"adhigop13"},"content":" return storeTask;","lastModifiedDate":"2023-09-08"},{"lineNumber":172,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":173,"author":{"gitId":"adhigop13"},"content":" public int getTaskSize() {","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"adhigop13"},"content":" return storeTask.size();","lastModifiedDate":"2023-09-08"},{"lineNumber":175,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":176,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":177,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":178,"author":{"gitId":"adhigop13"},"content":" * Save data string.","lastModifiedDate":"2023-09-21"},{"lineNumber":179,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":180,"author":{"gitId":"adhigop13"},"content":" * @return save msg","lastModifiedDate":"2023-09-21"},{"lineNumber":181,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":182,"author":{"gitId":"adhigop13"},"content":" public String saveData() {","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":184,"author":{"gitId":"adhigop13"},"content":" //closes file and truncates it","lastModifiedDate":"2023-09-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" //@@author adhigop13-reused","lastModifiedDate":"2023-09-25"},{"lineNumber":186,"author":{"gitId":"-"},"content":" //Reused from ChatGPT","lastModifiedDate":"2023-09-25"},{"lineNumber":187,"author":{"gitId":"-"},"content":" //with minor modifications","lastModifiedDate":"2023-09-25"},{"lineNumber":188,"author":{"gitId":"-"},"content":" Files.write(Duke.PATH_OF_DIRECTORY, new byte[0], StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2023-09-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c this.getTaskSize(); i++) {","lastModifiedDate":"2023-09-22"},{"lineNumber":190,"author":{"gitId":"-"},"content":" String taskToString \u003d this.getStoreTask().get(i).storeToDiskFormat() + \"\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":" Files.write(Duke.PATH_OF_DIRECTORY, taskToString.getBytes(), StandardOpenOption.APPEND);","lastModifiedDate":"2023-09-21"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" return Ui.saveDukeMsg();","lastModifiedDate":"2023-09-21"},{"lineNumber":194,"author":{"gitId":"-"},"content":" //@@author","lastModifiedDate":"2023-09-25"},{"lineNumber":195,"author":{"gitId":"adhigop13"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":196,"author":{"gitId":"adhigop13"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-21"},{"lineNumber":197,"author":{"gitId":"adhigop13"},"content":" return \"An error occurred...\";","lastModifiedDate":"2023-09-21"},{"lineNumber":198,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":199,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":200,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"-":10,"adhigop13":190}},{"path":"src/main/java/dukeuielements/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"package dukeuielements;","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.util.ListIterator;","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import duke.TaskList;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import task.Task;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-20"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" * The type Ui.","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"public class Ui {","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" private static final String INDENT \u003d \" \";","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * Print list string.","lastModifiedDate":"2023-09-20"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * @param ls the ls","lastModifiedDate":"2023-09-20"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" public static String printList(ListIterator\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" String listString \u003d \"Entries on memory...\" + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" while (ls.hasNext()) {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" count++;","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" listString \u003d listString + count + \".\" + ls.next().toString() + \"\\n\";","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return listString;","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" * Print number of entries string.","lastModifiedDate":"2023-09-20"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" public static String printNumberOfEntries(Task task, TaskList taskList) {","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" String printTask \u003d \"Added 1 new task\" + \"\\n\" + INDENT + task.toString() + \"\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" return printTask + \"\\n\" + \"Now you have \" + taskList.getTaskSize() + \" tasks in your task scheduler...\";","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" * Invalid date time entry string.","lastModifiedDate":"2023-09-20"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" public static String invalidDateTimeEntry() {","lastModifiedDate":"2023-09-08"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" return \"Invalid date/time entry. Please give in yyyy-mm-dd hh:mm format...\";","lastModifiedDate":"2023-09-08"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-24"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" * Invalid deadline format string.","lastModifiedDate":"2023-09-24"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-24"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" * @return Message indicating wrong format.","lastModifiedDate":"2023-09-24"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" public static String invalidDeadlineFormat() {","lastModifiedDate":"2023-09-24"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" return \"Invalid format for deadline. Please give in deadline description/yyyy-mm-dd hh:mm format...\";","lastModifiedDate":"2023-09-24"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":" * Invalid event format string.","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-24"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":" * @return Message indicating wrong format.","lastModifiedDate":"2023-09-24"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" public static String invalidEventFormat() {","lastModifiedDate":"2023-09-24"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" return \"Invalid format for deadline. \"","lastModifiedDate":"2023-09-24"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" + \"Please give in event description1/yyyy-mm-dd hh:mm/yyyy-mm-dd hh:mm format...\";","lastModifiedDate":"2023-09-24"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":" * Empty list string.","lastModifiedDate":"2023-09-20"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":73,"author":{"gitId":"adhigop13"},"content":" public static String emptyList() {","lastModifiedDate":"2023-09-08"},{"lineNumber":74,"author":{"gitId":"adhigop13"},"content":" return \"Duke could not find your query! Please try again...\";","lastModifiedDate":"2023-09-08"},{"lineNumber":75,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":76,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":77,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":78,"author":{"gitId":"adhigop13"},"content":" * Delete task print string.","lastModifiedDate":"2023-09-20"},{"lineNumber":79,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":80,"author":{"gitId":"adhigop13"},"content":" * @param itemRemoved the item removed","lastModifiedDate":"2023-09-20"},{"lineNumber":81,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":82,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":83,"author":{"gitId":"adhigop13"},"content":" public static String deleteTaskPrint(Task itemRemoved, TaskList taskList) {","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"adhigop13"},"content":" String removedTask \u003d \"This task was removed...\" + \"\\n\" + itemRemoved + \"\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"adhigop13"},"content":" removedTask \u003d removedTask + \"Now you have \" + taskList.getTaskSize()","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"adhigop13"},"content":" + \" tasks in your task scheduler...\";","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"adhigop13"},"content":" return removedTask;","lastModifiedDate":"2023-09-08"},{"lineNumber":88,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":89,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":90,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":91,"author":{"gitId":"adhigop13"},"content":" * Find task print string.","lastModifiedDate":"2023-09-20"},{"lineNumber":92,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":93,"author":{"gitId":"adhigop13"},"content":" * @param ls the ls","lastModifiedDate":"2023-09-20"},{"lineNumber":94,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":95,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":96,"author":{"gitId":"adhigop13"},"content":" public static String findTaskPrint(ListIterator\u003cTask\u003e ls) {","lastModifiedDate":"2023-09-08"},{"lineNumber":97,"author":{"gitId":"adhigop13"},"content":" String findString \u003d \"Tasks that may match your search result...\" + \"\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"adhigop13"},"content":" findString +\u003d printList(ls);","lastModifiedDate":"2023-09-08"},{"lineNumber":99,"author":{"gitId":"adhigop13"},"content":" return findString;","lastModifiedDate":"2023-09-08"},{"lineNumber":100,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-08"},{"lineNumber":101,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":102,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":103,"author":{"gitId":"adhigop13"},"content":" * Mark task","lastModifiedDate":"2023-09-21"},{"lineNumber":104,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":105,"author":{"gitId":"adhigop13"},"content":" * @param task the task","lastModifiedDate":"2023-09-21"},{"lineNumber":106,"author":{"gitId":"adhigop13"},"content":" * @return the string representation of marked task","lastModifiedDate":"2023-09-21"},{"lineNumber":107,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":108,"author":{"gitId":"adhigop13"},"content":" public static String markStringReturn(Task task) {","lastModifiedDate":"2023-09-21"},{"lineNumber":109,"author":{"gitId":"adhigop13"},"content":" if (!task.getTaskStatus()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":110,"author":{"gitId":"adhigop13"},"content":" task.setFalseStatus();","lastModifiedDate":"2023-09-21"},{"lineNumber":111,"author":{"gitId":"adhigop13"},"content":" return \"Nice! Task completed successfully!\" + \"\\n\" + INDENT + task;","lastModifiedDate":"2023-09-21"},{"lineNumber":112,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"adhigop13"},"content":" return \"Task already checked. Please try again...\" + \"\\n\" + INDENT + task;","lastModifiedDate":"2023-09-21"},{"lineNumber":114,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":115,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":116,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":117,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":118,"author":{"gitId":"adhigop13"},"content":" * Unmark task","lastModifiedDate":"2023-09-21"},{"lineNumber":119,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":120,"author":{"gitId":"adhigop13"},"content":" * @param task the task","lastModifiedDate":"2023-09-21"},{"lineNumber":121,"author":{"gitId":"adhigop13"},"content":" * @return the string representation of unmarked task","lastModifiedDate":"2023-09-21"},{"lineNumber":122,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":123,"author":{"gitId":"adhigop13"},"content":" public static String unmarkStringReturn(Task task) {","lastModifiedDate":"2023-09-21"},{"lineNumber":124,"author":{"gitId":"adhigop13"},"content":" if (!task.getTaskStatus()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":125,"author":{"gitId":"adhigop13"},"content":" return \"Task already unmarked! Please try again...\" + \"\\n\" + INDENT + task;","lastModifiedDate":"2023-09-21"},{"lineNumber":126,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-09-21"},{"lineNumber":127,"author":{"gitId":"adhigop13"},"content":" task.setFalseStatus();","lastModifiedDate":"2023-09-21"},{"lineNumber":128,"author":{"gitId":"adhigop13"},"content":" return \"Sure! Task status unchecked!\" + \"\\n\" + INDENT + task;","lastModifiedDate":"2023-09-21"},{"lineNumber":129,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":130,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":131,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":132,"author":{"gitId":"adhigop13"},"content":" * End duke msg string.","lastModifiedDate":"2023-09-20"},{"lineNumber":133,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-20"},{"lineNumber":134,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-20"},{"lineNumber":135,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":136,"author":{"gitId":"adhigop13"},"content":" public static String saveDukeMsg() {","lastModifiedDate":"2023-09-21"},{"lineNumber":137,"author":{"gitId":"adhigop13"},"content":" return \"Tasks have been saved to disk!\";","lastModifiedDate":"2023-09-21"},{"lineNumber":138,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":139}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" * This class encapsulates a Deadline.","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" private String deadlineBy;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime deadlineInDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Deadline.","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" * @param description the Deadline description","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * @param deadlineBy deadline by time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" public Deadline(String description, String deadlineBy) {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" this.deadlineBy \u003d deadlineBy;","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" this.deadlineInDateTime \u003d formatDateAndTime(deadlineBy);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Deadline.","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" * @param status the status","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" * @param description the Deadline description","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" * @param deadlineBy deadline by time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" public Deadline(int status, String description, String deadlineBy) {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" super(description, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" this.deadlineBy \u003d deadlineBy;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" this.deadlineInDateTime \u003d formatDateAndTime(deadlineBy);","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" return \"D\" + \"|\" + this.diskStatus() + \"|\" + this.getDescription() + \"|\" + this.deadlineBy;","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" return \"[D] \" + super.toString() + \" (by: \" + printDateTimeFormat(deadlineInDateTime) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":52}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" * This class encapsulates an Event","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" private String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" private String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime fromDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" private LocalDateTime toDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Event.","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * @param description the Event description","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" * @param from the from time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * @param to the to time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" this.fromDateTime \u003d formatDateAndTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" this.toDateTime \u003d formatDateAndTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Event.","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" * @param status the status","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" * @param description the Event description","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" * @param from the from time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" * @param to the to time yyyy-MM-dd HH:mm","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" public Event(int status, String description, String from, String to) {","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" super(description, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" this.fromDateTime \u003d formatDateAndTime(from);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" this.toDateTime \u003d formatDateAndTime(to);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" return \"E\" + \"|\" + this.diskStatus() + \"|\" + this.getDescription() + \"|\" + this.from + \"|\" + this.to;","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" return \"[E] \" + super.toString() + \" (from: \"","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" + printDateTimeFormat(this.fromDateTime) + \" to: \" + printDateTimeFormat(this.toDateTime) + \")\";","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":60}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"import duke.DukeException;","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"import dukeuielements.Ui;","lastModifiedDate":"2023-09-20"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" * This class encapsulates a Task.","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" private String description;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" private boolean isTrueStatus;","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Task.","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" * @param description the description","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" this.isTrueStatus \u003d false;","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" * Instantiates a new Task.","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" * @param description the description","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" * @param status the status","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" public Task(String description, boolean status) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" this.isTrueStatus \u003d status;","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" * Returns task complete/incomplete message based on user input.","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" * @param userInput mark/unmark which specifies the command.","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" * @return the string","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" public String changeStatus(String userInput) throws DukeException {","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" switch (userInput) {","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" case \"mark\":","lastModifiedDate":"2023-09-16"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" return Ui.markStringReturn(this);","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":" return Ui.unmarkStringReturn(this);","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"adhigop13"},"content":" default:","lastModifiedDate":"2023-09-16"},{"lineNumber":52,"author":{"gitId":"adhigop13"},"content":" throw new DukeException(\"Unknown error occurred!\");","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"adhigop13"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":57,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"adhigop13"},"content":" * Returns date and time as a LocalDateTime parsed from user input yyyy-MM-dd HH:mm.","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"adhigop13"},"content":" * @param userDateAndTime User provided date and time.","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"adhigop13"},"content":" * @return Parsed date and time in yyyy-MM-dd HH:mm.","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"adhigop13"},"content":" * @throws DateTimeParseException If user input does not follow required format.","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"adhigop13"},"content":" public LocalDateTime formatDateAndTime(String userDateAndTime) throws DateTimeParseException {","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"adhigop13"},"content":" DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"adhigop13"},"content":" return LocalDateTime.parse(userDateAndTime, inputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"adhigop13"},"content":" * Returns date and time as a String parsed from LocalDateTime variable yyyy-MM-dd HH:mm.","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"adhigop13"},"content":" * @param systemDateAndTime LocalDateTime value stored on disk.","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"adhigop13"},"content":" * @return String type Date and time in MMM dd, yyyy HH:mm format.","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"adhigop13"},"content":" public String printDateTimeFormat(LocalDateTime systemDateAndTime) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"adhigop13"},"content":" DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd, yyyy HH:mm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"adhigop13"},"content":" return systemDateAndTime.format(outputFormat);","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"adhigop13"},"content":" * Gets status.","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"adhigop13"},"content":" * @return the status","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"adhigop13"},"content":" public int diskStatus() {","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"adhigop13"},"content":" return this.isTrueStatus ? 1 : 0;","lastModifiedDate":"2023-09-21"},{"lineNumber":92,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"adhigop13"},"content":" public boolean getTaskStatus() {","lastModifiedDate":"2023-09-21"},{"lineNumber":94,"author":{"gitId":"adhigop13"},"content":" return this.isTrueStatus;","lastModifiedDate":"2023-09-21"},{"lineNumber":95,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":96,"author":{"gitId":"adhigop13"},"content":" public void setFalseStatus() {","lastModifiedDate":"2023-09-21"},{"lineNumber":97,"author":{"gitId":"adhigop13"},"content":" this.isTrueStatus \u003d !this.isTrueStatus;","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":99,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":100,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":101,"author":{"gitId":"adhigop13"},"content":" * Gets description.","lastModifiedDate":"2023-09-21"},{"lineNumber":102,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":103,"author":{"gitId":"adhigop13"},"content":" * @return the description","lastModifiedDate":"2023-09-21"},{"lineNumber":104,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":105,"author":{"gitId":"adhigop13"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"adhigop13"},"content":" return this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"adhigop13"},"content":" * Returns a String to store Task on Duke.txt file.","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"adhigop13"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"adhigop13"},"content":" * @return String to store Task on Duke.txt file.","lastModifiedDate":"2023-09-02"},{"lineNumber":113,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":114,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"adhigop13"},"content":" return this.diskStatus() + \"|\" + this.description;","lastModifiedDate":"2023-09-21"},{"lineNumber":116,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"adhigop13"},"content":" if (this.diskStatus() \u003d\u003d 1) {","lastModifiedDate":"2023-09-21"},{"lineNumber":121,"author":{"gitId":"adhigop13"},"content":" return \"[\" + \"X\" + \"] \" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"adhigop13"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"adhigop13"},"content":" return \"[\" + \" \" + \"] \" + this.description;","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":126}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package task;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":" * This class encapsulates a ToDo.","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" public ToDo(int status, String description) {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" super(description, status !\u003d 0); //if 0, return false, else return true","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" public String storeToDiskFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" return \"T\" + \"|\" + this.diskStatus() + \"|\" + this.getDescription();","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":30}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"-Infinity\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" \u003cLabel fx:id\u003d\"dialog\" maxHeight\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" style\u003d\"-fx-label-padding: 10; -fx-background-radius: 15; -fx-background-color: #80b1ff;\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"adhigop13":16}},{"path":"src/main/resources/view/DukeReplyDialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"-Infinity\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" \u003cLabel fx:id\u003d\"dialog\" maxHeight\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" style\u003d\"-fx-label-padding: 10; -fx-background-radius: 15; -fx-background-color: #90ee90;\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"adhigop13":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"601.0\" prefWidth\u003d\"401.0\" style\u003d\"-fx-background-color: #c4c976;\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\"\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutX\u003d\"14.0\" layoutY\u003d\"564.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"33.0\" prefWidth\u003d\"303.0\" style\u003d\"-fx-background-radius: 15;\" AnchorPane.bottomAnchor\u003d\"11.0\" /\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"331.0\" layoutY\u003d\"556.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"33.0\" prefWidth\u003d\"55.0\" style\u003d\"-fx-background-radius: 15;\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" opacity\u003d\"0.91\" prefHeight\u003d\"547.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-20"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" maxHeight\u003d\"-Infinity\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-19"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-16"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"adhigop13":19}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":" public void parse_invalidInput_exceptionThrown() throws DukeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" Parser parser \u003d new Parser(taskList);","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" parser.parse(\"1234\");","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"No enum constant duke.Parser.TaskKeyVal.1234\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" public void parse_emptyInput_exceptionThrown() throws DukeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" Parser parser \u003d new Parser(taskList);","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" parser.parse(\"\");","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"No enum constant duke.Parser.TaskKeyVal.\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" public void parse_missingArgument_dukeExceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" Parser parser \u003d new Parser(taskList);","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" parser.parse(\"delete\");","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" assertEquals(\" ☹ OOPS!!! The description of a task cannot be empty.\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" public void parse_singleArgumentOperations_success() {","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" Parser parser \u003d new Parser(taskList);","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" parser.parse(\"list\");","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" });","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":47}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"package duke;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"adhigop13"},"content":" public void deleteTask_negativeInput_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"adhigop13"},"content":" taskList.deleteTask(-1231);","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"Invalid Task entered. Please try again...\", e.getMessage());","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"adhigop13"},"content":" public void findTask_itemNotInList_printEmptyListWithUi() {","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"Duke could not find your query! Please try again...\", taskList.findTask(\"//-\u003d./;\u0027#%^2\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"adhigop13"},"content":" public void deleteTask_emptyList_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"adhigop13"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"adhigop13"},"content":" taskList.deleteTask(1);","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"adhigop13"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"adhigop13"},"content":" assertEquals(\"Task Scheduler is empty... Please try again!\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"adhigop13"},"content":" public void deleteTask_singleElementList_success() {","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"adhigop13"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"adhigop13"},"content":" taskList.addToDo(\"Dummy event\");","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"adhigop13"},"content":" taskList.deleteTask(1);","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"adhigop13"},"content":" });","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"adhigop13"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"adhigop13"},"content":" public void findTask_itemInList_success() {","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"adhigop13"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"adhigop13"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"adhigop13"},"content":" taskList.addToDo(\"Dummy event\");","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"adhigop13"},"content":" taskList.findTask(\"D\");","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"adhigop13"},"content":" });","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"adhigop13"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"adhigop13"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"adhigop13":50}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"adhigop13"},"content":"ToDo play football","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"adhigop13"},"content":"Deadline finish hw/10pm","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"adhigop13"},"content":"task","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"adhigop13"},"content":"Event attend lecture/2pm/4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"adhigop13"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"adhigop13"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"adhigop13"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"adhigop13"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"adhigop13"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"adhigop13":11}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"adhigop13"},"content":"pause","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"-":21,"adhigop13":1}}] diff --git a/adhigop13_ip_master/commits.json b/adhigop13_ip_master/commits.json index 5ebd96bb..499dbaa3 100644 --- a/adhigop13_ip_master/commits.json +++ b/adhigop13_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"adhigop13":[{"date":"2023-08-23","commitResults":[{"hash":"4eba4895c47beab03bd32421794a1ce91c14992a","isMergeCommit":false,"messageTitle":"Completed Level 0 skeletal version.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"804e070822564e664b1cf78bae26f8806125e76d","isMergeCommit":false,"messageTitle":"Added echo function lvl1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":1}}},{"hash":"ecba968165dbbb2b26574969c1174f7c977863f3","isMergeCommit":false,"messageTitle":"Added memory and indentation, lvl-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":7}}},{"hash":"fe9ebb1091452a1eb6ea989c6f2e52e25e47b11e","isMergeCommit":false,"messageTitle":"Created new Task class to encapsulate \"Task\" functionality. Implemented mark and unmark functions.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":5}}},{"hash":"2f02b70a6c847e08dd2e6a7b96ebb316430b8392","isMergeCommit":false,"messageTitle":"Added new files for encapsulating different tasks. Lvl-4 update","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":16}}},{"hash":"993fef39e2e09251465874d7c7cda7c1c8f488f7","isMergeCommit":false,"messageTitle":"Significant changes made to code structure in the child classes so that input will be taken as one. (eg todo swim). Removes necessity for multiple scanners and passes testcases.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":21,"deletions":42},"bat":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0806bd6387958c01016520495a852bcfe4ff0cab","isMergeCommit":false,"messageTitle":"Added DukeException class, Lvl 5 completed","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":50}}},{"hash":"d0ce9dfd1841d70cc4dbbc9efc81f46af96d1325","isMergeCommit":false,"messageTitle":"Added Delete function, more exceptions to handle errors. Level 6 update","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":29}}},{"hash":"0ce33f48be60bdfb05f9c0ccaacd770161e9538b","isMergeCommit":false,"messageTitle":"Replaced old list implementation with enum. Changes in code related to this. Added comments to ensure better code readability...","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":15}}}]},{"date":"2023-08-31","commitResults":[{"hash":"5c04e623215ebaa2bbed0dce6f732e030defc9f7","isMergeCommit":false,"messageTitle":"Add duke.txt and save function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":170,"deletions":79}}},{"hash":"4411ca7517a08d3df55c9513606a2a3a499f5652","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"975d42e4481f59302a9581c6df03908c1343c726","isMergeCommit":false,"messageTitle":"Add LocalDateTime storage lvl8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":140,"deletions":102}}},{"hash":"442740cb9cb1ad63d30b4e34786823d0273261ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"5466d935027d686e91819cbbb6bf756d53169290","isMergeCommit":false,"messageTitle":"Add more OOP, create new classes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":212,"deletions":115}}},{"hash":"158d6be223022b36b91b388badbd1729efd87c2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"6c656eac615546f412febe05a71e8fea19db57c2","isMergeCommit":false,"messageTitle":"Create packages : A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":4},"java":{"insertions":55,"deletions":29}}},{"hash":"298987ca6fc8b67d78fc06d3229e4908a56de98d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d922d57e5d153c91bb960124748b72f3ae906e1","isMergeCommit":false,"messageTitle":"Add build.gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":2},"java":{"insertions":1,"deletions":2}}},{"hash":"fb36bda6ad1a215ab41861c7d60690df8a2d7559","isMergeCommit":false,"messageTitle":"Add JUnit Tests for Parser and TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":9},"java":{"insertions":44,"deletions":1}}},{"hash":"5d58cd0a3abb878907fbe5a26b65a20de63f4c59","isMergeCommit":false,"messageTitle":"Create Jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":1}}}]},{"date":"2023-09-02","commitResults":[{"hash":"248c22f919c95e4f48eb4d9dfd925f7b39665265","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":135,"deletions":16}}},{"hash":"577928667181818e1517fd690266790a4faef4b6","isMergeCommit":false,"messageTitle":"Fix code to follow Java Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":60}}},{"hash":"1d8013c35f6d8aa730cd797196472fc781114ac0","isMergeCommit":false,"messageTitle":"Add find function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":28,"deletions":1}}},{"hash":"f952c9a7e44f662652f895ac3d3bd4671eb7f7a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"4e5137c471bfb161626528cd3d88ffa081175d17","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Parser.java\n#\tsrc/main/java/duke/Storage.java\n#\tsrc/main/java/duke/TaskList.java\n#\tsrc/main/java/task/Deadline.java\n#\tsrc/main/java/task/Event.java\n#\tsrc/main/java/task/Task.java\n#\tsrc/main/java/task/ToDo.java\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"f5779bc25a3f61f7df7683234d741d0f3bd9bef4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tdata/duke.txt\n#\tsrc/main/java/duke/Parser.java\n#\tsrc/main/java/dukeUiElements/Ui.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-08","commitResults":[{"hash":"a39a581edacd5f9295d3e19256bee8a5f49b4981","isMergeCommit":false,"messageTitle":"Add basic GUI(Pre FXML) Level 10","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"txt":{"insertions":2,"deletions":0},"java":{"insertions":288,"deletions":91}}}]},{"date":"2023-09-14","commitResults":[{"hash":"02527448e4c581ab744c5c081e6c9436b65be658","isMergeCommit":false,"messageTitle":"Add checkstyle mods","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":4,"deletions":0},"java":{"insertions":7,"deletions":33}}}]},{"date":"2023-09-15","commitResults":[{"hash":"648de66f83f86a11fd5de01865716ba0759dcc14","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":8,"deletions":7}}}]},{"date":"2023-09-16","commitResults":[{"hash":"bfb4703ffaba5b8d16b21f19fcb8ef65620af80c","isMergeCommit":false,"messageTitle":"Add FXML support","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":35,"deletions":0},"java":{"insertions":123,"deletions":135}}},{"hash":"4cb5cd0d06aa6deb30bf8ab6fda3019e52ee3d19","isMergeCommit":false,"messageTitle":"Refactor code for better code quality","messageBody":"Several code were changed from Arrowhead style to more readable\nformat.\n\nChanged if-else to switch-case-default for better readability.\n\nAs a step towards refactoring, several new methods have been created\nto improve the readability of code.\n","tags":["A-FullCommitMessage","A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":75}}},{"hash":"7113c4c0309664fbb2c7fc54bb970c25bd0a63ee","isMergeCommit":true,"messageTitle":"Merge pull request #2 from adhigop13/branch-A-Assertions","messageBody":"Add assertions","fileTypesAndContributionMap":{}},{"hash":"aa53f1e7f1cceb0a2fbdf6301b92d93a68a3a1d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodeQuality\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Parser.java\n#\tsrc/main/java/duke/Storage.java\n#\tsrc/main/java/duke/TaskList.java\n","fileTypesAndContributionMap":{}}]},{"date":"2023-09-19","commitResults":[{"hash":"7d9d159342f825293128863b6842144ab40b074c","isMergeCommit":false,"messageTitle":"Add improved find functionality","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"fxml":{"insertions":3,"deletions":3},"java":{"insertions":41,"deletions":4}}}]},{"date":"2023-09-20","commitResults":[{"hash":"0a8c58e6d083ec8dac3c71fb3f71889e2e18ada2","isMergeCommit":false,"messageTitle":"Improve GUI to support chat bubbles","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":6,"deletions":6},"java":{"insertions":18,"deletions":14}}},{"hash":"7f04105f1f15942f32b0b85ae064b31e26dc582d","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":12}}}]},{"date":"2023-09-21","commitResults":[{"hash":"3eaa83972bab5e884181d1a223314bd1f55e69e4","isMergeCommit":false,"messageTitle":"Add significant changes to Ui and code quality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":215,"deletions":103}}},{"hash":"b04e0ce70f29ec814f7ff09ac859b971f40eb3a1","isMergeCommit":false,"messageTitle":"Fix Junit assertEquals error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":7}}},{"hash":"28643dff1f048d5810d9823e46084152c53b6d5f","isMergeCommit":false,"messageTitle":"Add green/blue text bubbles","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{"fxml":{"insertions":17,"deletions":1},"java":{"insertions":75,"deletions":37}}},{"hash":"874199fad45902d428cd8bc6f804ed5b613038e2","isMergeCommit":false,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":9},"java":{"insertions":34,"deletions":41}}},{"hash":"ee2c6997a788318d54b57dec82a80c8dd5f823b4","isMergeCommit":false,"messageTitle":"update README.md","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":152,"deletions":13}}}]},{"date":"2023-09-22","commitResults":[{"hash":"0e5f0ec088204f06cf77dfe6d1ee5e06dd24be7a","isMergeCommit":false,"messageTitle":"Add minor bug fixes and add images to README.md","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":43},"md":{"insertions":10,"deletions":43}}},{"hash":"2570df6b700dd77ffff51c2d5d13dcb697d792d0","isMergeCommit":false,"messageTitle":"Modify README.md","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1},"md":{"insertions":4,"deletions":1}}},{"hash":"12171bc5f273a82e4fb43db734b0417b0b24544a","isMergeCommit":false,"messageTitle":"Add indentation in README.md","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":0},"md":{"insertions":21,"deletions":0}}},{"hash":"5932689ec1b139d8d9e3a4b5be58a0438f9133ae","isMergeCommit":false,"messageTitle":"Add changes from static to instance variables","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":41}}}]},{"date":"2023-09-24","commitResults":[{"hash":"c2af98dc7d5852bbed5e430da6f1b7251ea2bd1b","isMergeCommit":false,"messageTitle":"Add stage title","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":2,"deletions":1}}},{"hash":"84d933f1964c2ebed54db1a709f8444a8c7cb2b2","isMergeCommit":false,"messageTitle":"Fix minor bugs in TaskList class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":37,"deletions":15}}}]},{"date":"2023-09-25","commitResults":[{"hash":"cadfef8934a88ecd43566227f37771269e63b361","isMergeCommit":false,"messageTitle":"Add acknowledgement for save method","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"adhigop13":{"java":1107,"md":138,"fxml":51,"sh":0,"bat":1,"gradle":30,"txt":16}},"authorContributionVariance":{"adhigop13":33674.43},"authorDisplayNameMap":{"adhigop13":"CS2103T-W11-4 ADHI..HNAN"}} +{"authorDailyContributionsMap":{"adhigop13":[{"date":"2023-08-23","commitResults":[{"hash":"4eba4895c47beab03bd32421794a1ce91c14992a","isMergeCommit":false,"messageTitle":"Completed Level 0 skeletal version.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"804e070822564e664b1cf78bae26f8806125e76d","isMergeCommit":false,"messageTitle":"Added echo function lvl1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":1}}},{"hash":"ecba968165dbbb2b26574969c1174f7c977863f3","isMergeCommit":false,"messageTitle":"Added memory and indentation, lvl-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":7}}},{"hash":"fe9ebb1091452a1eb6ea989c6f2e52e25e47b11e","isMergeCommit":false,"messageTitle":"Created new Task class to encapsulate \"Task\" functionality. Implemented mark and unmark functions.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":5}}},{"hash":"2f02b70a6c847e08dd2e6a7b96ebb316430b8392","isMergeCommit":false,"messageTitle":"Added new files for encapsulating different tasks. Lvl-4 update","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":16}}},{"hash":"993fef39e2e09251465874d7c7cda7c1c8f488f7","isMergeCommit":false,"messageTitle":"Significant changes made to code structure in the child classes so that input will be taken as one. (eg todo swim). Removes necessity for multiple scanners and passes testcases.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":21,"deletions":42},"bat":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0806bd6387958c01016520495a852bcfe4ff0cab","isMergeCommit":false,"messageTitle":"Added DukeException class, Lvl 5 completed","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":50}}},{"hash":"d0ce9dfd1841d70cc4dbbc9efc81f46af96d1325","isMergeCommit":false,"messageTitle":"Added Delete function, more exceptions to handle errors. Level 6 update","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":29}}},{"hash":"0ce33f48be60bdfb05f9c0ccaacd770161e9538b","isMergeCommit":false,"messageTitle":"Replaced old list implementation with enum. Changes in code related to this. Added comments to ensure better code readability...","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":15}}}]},{"date":"2023-08-31","commitResults":[{"hash":"5c04e623215ebaa2bbed0dce6f732e030defc9f7","isMergeCommit":false,"messageTitle":"Add duke.txt and save function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":170,"deletions":79}}},{"hash":"4411ca7517a08d3df55c9513606a2a3a499f5652","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"975d42e4481f59302a9581c6df03908c1343c726","isMergeCommit":false,"messageTitle":"Add LocalDateTime storage lvl8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":140,"deletions":102}}},{"hash":"442740cb9cb1ad63d30b4e34786823d0273261ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"5466d935027d686e91819cbbb6bf756d53169290","isMergeCommit":false,"messageTitle":"Add more OOP, create new classes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":212,"deletions":115}}},{"hash":"158d6be223022b36b91b388badbd1729efd87c2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"6c656eac615546f412febe05a71e8fea19db57c2","isMergeCommit":false,"messageTitle":"Create packages : A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":4},"java":{"insertions":55,"deletions":29}}},{"hash":"298987ca6fc8b67d78fc06d3229e4908a56de98d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4d922d57e5d153c91bb960124748b72f3ae906e1","isMergeCommit":false,"messageTitle":"Add build.gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":2},"java":{"insertions":1,"deletions":2}}},{"hash":"fb36bda6ad1a215ab41861c7d60690df8a2d7559","isMergeCommit":false,"messageTitle":"Add JUnit Tests for Parser and TaskList","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":9},"java":{"insertions":44,"deletions":1}}},{"hash":"5d58cd0a3abb878907fbe5a26b65a20de63f4c59","isMergeCommit":false,"messageTitle":"Create Jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":1}}}]},{"date":"2023-09-02","commitResults":[{"hash":"248c22f919c95e4f48eb4d9dfd925f7b39665265","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":135,"deletions":16}}},{"hash":"577928667181818e1517fd690266790a4faef4b6","isMergeCommit":false,"messageTitle":"Fix code to follow Java Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":60}}},{"hash":"1d8013c35f6d8aa730cd797196472fc781114ac0","isMergeCommit":false,"messageTitle":"Add find function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":28,"deletions":1}}},{"hash":"f952c9a7e44f662652f895ac3d3bd4671eb7f7a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"4e5137c471bfb161626528cd3d88ffa081175d17","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Parser.java\n#\tsrc/main/java/duke/Storage.java\n#\tsrc/main/java/duke/TaskList.java\n#\tsrc/main/java/task/Deadline.java\n#\tsrc/main/java/task/Event.java\n#\tsrc/main/java/task/Task.java\n#\tsrc/main/java/task/ToDo.java\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"f5779bc25a3f61f7df7683234d741d0f3bd9bef4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tdata/duke.txt\n#\tsrc/main/java/duke/Parser.java\n#\tsrc/main/java/dukeUiElements/Ui.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-08","commitResults":[{"hash":"a39a581edacd5f9295d3e19256bee8a5f49b4981","isMergeCommit":false,"messageTitle":"Add basic GUI(Pre FXML) Level 10","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"txt":{"insertions":2,"deletions":0},"java":{"insertions":288,"deletions":91}}}]},{"date":"2023-09-14","commitResults":[{"hash":"02527448e4c581ab744c5c081e6c9436b65be658","isMergeCommit":false,"messageTitle":"Add checkstyle mods","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":4,"deletions":0},"java":{"insertions":7,"deletions":33}}}]},{"date":"2023-09-15","commitResults":[{"hash":"648de66f83f86a11fd5de01865716ba0759dcc14","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":8,"deletions":7}}}]},{"date":"2023-09-16","commitResults":[{"hash":"bfb4703ffaba5b8d16b21f19fcb8ef65620af80c","isMergeCommit":false,"messageTitle":"Add FXML support","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":35,"deletions":0},"java":{"insertions":123,"deletions":135}}},{"hash":"4cb5cd0d06aa6deb30bf8ab6fda3019e52ee3d19","isMergeCommit":false,"messageTitle":"Refactor code for better code quality","messageBody":"Several code were changed from Arrowhead style to more readable\nformat.\n\nChanged if-else to switch-case-default for better readability.\n\nAs a step towards refactoring, several new methods have been created\nto improve the readability of code.\n","tags":["A-FullCommitMessage","A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":75}}},{"hash":"7113c4c0309664fbb2c7fc54bb970c25bd0a63ee","isMergeCommit":true,"messageTitle":"Merge pull request #2 from adhigop13/branch-A-Assertions","messageBody":"Add assertions","fileTypesAndContributionMap":{}},{"hash":"aa53f1e7f1cceb0a2fbdf6301b92d93a68a3a1d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodeQuality\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Parser.java\n#\tsrc/main/java/duke/Storage.java\n#\tsrc/main/java/duke/TaskList.java\n","fileTypesAndContributionMap":{}}]},{"date":"2023-09-19","commitResults":[{"hash":"7d9d159342f825293128863b6842144ab40b074c","isMergeCommit":false,"messageTitle":"Add improved find functionality","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"fxml":{"insertions":3,"deletions":3},"java":{"insertions":41,"deletions":4}}}]},{"date":"2023-09-20","commitResults":[{"hash":"0a8c58e6d083ec8dac3c71fb3f71889e2e18ada2","isMergeCommit":false,"messageTitle":"Improve GUI to support chat bubbles","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":6,"deletions":6},"java":{"insertions":18,"deletions":14}}},{"hash":"7f04105f1f15942f32b0b85ae064b31e26dc582d","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":12}}}]},{"date":"2023-09-21","commitResults":[{"hash":"3eaa83972bab5e884181d1a223314bd1f55e69e4","isMergeCommit":false,"messageTitle":"Add significant changes to Ui and code quality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":215,"deletions":103}}},{"hash":"b04e0ce70f29ec814f7ff09ac859b971f40eb3a1","isMergeCommit":false,"messageTitle":"Fix Junit assertEquals error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":7}}},{"hash":"28643dff1f048d5810d9823e46084152c53b6d5f","isMergeCommit":false,"messageTitle":"Add green/blue text bubbles","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{"fxml":{"insertions":17,"deletions":1},"java":{"insertions":75,"deletions":37}}},{"hash":"874199fad45902d428cd8bc6f804ed5b613038e2","isMergeCommit":false,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":9},"java":{"insertions":34,"deletions":41}}},{"hash":"ee2c6997a788318d54b57dec82a80c8dd5f823b4","isMergeCommit":false,"messageTitle":"update README.md","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":152,"deletions":13}}}]},{"date":"2023-09-22","commitResults":[{"hash":"0e5f0ec088204f06cf77dfe6d1ee5e06dd24be7a","isMergeCommit":false,"messageTitle":"Add minor bug fixes and add images to README.md","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":43},"md":{"insertions":10,"deletions":43}}},{"hash":"2570df6b700dd77ffff51c2d5d13dcb697d792d0","isMergeCommit":false,"messageTitle":"Modify README.md","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1},"md":{"insertions":4,"deletions":1}}},{"hash":"12171bc5f273a82e4fb43db734b0417b0b24544a","isMergeCommit":false,"messageTitle":"Add indentation in README.md","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":0},"md":{"insertions":21,"deletions":0}}},{"hash":"5932689ec1b139d8d9e3a4b5be58a0438f9133ae","isMergeCommit":false,"messageTitle":"Add changes from static to instance variables","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":41}}}]},{"date":"2023-09-24","commitResults":[{"hash":"c2af98dc7d5852bbed5e430da6f1b7251ea2bd1b","isMergeCommit":false,"messageTitle":"Add stage title","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":2,"deletions":1}}},{"hash":"84d933f1964c2ebed54db1a709f8444a8c7cb2b2","isMergeCommit":false,"messageTitle":"Fix minor bugs in TaskList class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":37,"deletions":15}}}]},{"date":"2023-09-25","commitResults":[{"hash":"cadfef8934a88ecd43566227f37771269e63b361","isMergeCommit":false,"messageTitle":"Add acknowledgement for save method","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}}]},{"date":"2023-09-26","commitResults":[{"hash":"10d03aa1ce8072d8a81dfe77d9782e3008a396a6","isMergeCommit":false,"messageTitle":"Fix compatibility issues on Linux","messageBody":"","tags":["A-Stable-Release"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"adhigop13":{"java":1107,"md":138,"fxml":51,"sh":0,"bat":1,"gradle":31,"txt":16}},"authorContributionVariance":{"adhigop13":33072.582},"authorDisplayNameMap":{"adhigop13":"CS2103T-W11-4 ADHI..HNAN"}} diff --git a/amosting_ip_master/authorship.json b/amosting_ip_master/authorship.json index db83bb95..f291a963 100644 --- a/amosting_ip_master/authorship.json +++ b/amosting_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":"amosting"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"checkstyle {","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" mainClass.set(\"Jarvis.Jarvis\")","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" archiveBaseName \u003d \"Jarvis\"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" archiveFileName \u003d \u0027Jarvis.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"amosting":24,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"# User Guide for Jarvis Personal Assistant Chatbot","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"---","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"Jarvis is a Personal Assistant Chatbot that helps users to manage their day-to-day tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"---","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"### Creating Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"You can request Jarvis to create 3 different types of tasks:","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":"- ***Todo*** - Tasks that are to be done regardless of time.","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":"- ***Event*** - Tasks that are to be done between specified date / time.","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"- ***Deadline*** - Tasks that are to be done by a certain date / time.","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":"### Marking Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":"You can ask Jarvis to mark your tasks as done once you have completed it them.","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":"### Unchecking Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":"You can request Jarvis to uncheck your marked tasks if you realise the tasks is not done.","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":"### Listing Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":"You can ask Jarvis to list all existing tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":"### Deleting Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":"You can get Jarvis to delete existing tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":"### Finding Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":"You can request Jarvis to search through all your existing task and find task(s) that matches your search keyword.","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":"### Automatic Saving and Loading of Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":"Jarvis automatically saves tasks into a local file as you enter commands and automatically loads tasks when you start Jarvis.","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":"---","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":"### `todo` - Adds a new todo task","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":"Jarvis creates a todo task and adds it to the current list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":"`todo DESCRIPTION PRIORITY`","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":"`DESCRIPTION`: Description of the todo task.","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":"`PRIORITY`: Priority of the todo task. It can only be low/medium/high.","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to create a todo with description `build Mark III suit` and `medium` priority.","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" `todo build Mark III suit medium`","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":"- A new todo created and added to the list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":"As you please Sir, I\u0027ve added the task:","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":"\t[T][ ][M] build Mark III suit","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":"You have now 1 tasks in the list Sir.","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":"### `deadline` - Adds a new deadline task","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":"Jarvis creates a deadline task and adds it to the current list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":"`deadline DESCRIPTION /BY PRIORITY`","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":"`DESCRIPTION`: Description of the todo task.","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":"`BY`: Date/time which the deadline task should be completed by.","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":"`PRIORITY`: Priority of the deadline task. It can only be low/medium/high.","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to create a deadline with description `destroy Ultron` and `high` priority.","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" `todo destroy Ultron /by Monday 2pm high`","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"amosting"},"content":"- A new deadline created and added to the list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"amosting"},"content":"As you please Sir, I\u0027ve added the task:","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"amosting"},"content":"\t[D][ ][M] destroy Ultron (by: Monday 2pm)","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"amosting"},"content":"You have now 1 tasks in the list Sir.","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"amosting"},"content":"### `event` - Adds a new event task","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"amosting"},"content":"Jarvis creates a event task and adds it to the current list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"amosting"},"content":"`event DESCRIPTION /from FROM /to TO PRIORITY`","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"amosting"},"content":"`DESCRIPTION`: Description of the todo task.","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"amosting"},"content":"`FROM`: Start date/time of the event task.","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"amosting"},"content":"`TO`: End date/time of the event task.","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"amosting"},"content":"`PRIORITY`: Priority of the event task. It can only be low/medium/high.","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to create a deadline with description `celebration for winning` and `low` priority.","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"amosting"},"content":" `event celebration for winning /from Tuesday 6pm /to Wednesday 2am low`","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"amosting"},"content":"- A new event created and added to the list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"amosting"},"content":"As you please Sir, I\u0027ve added the task:","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"amosting"},"content":"\t[E][ ][L] celebration for winning (from: Tuesday 6pm to: Wednesday 2am)","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"amosting"},"content":"You have now 1 tasks in the list Sir.","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"amosting"},"content":"### `mark` - Marks an existing task as done","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"amosting"},"content":"Jarvis marks the task with the specified index as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"amosting"},"content":"`mark INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"amosting"},"content":"`INDEX`: Index of the task to be marked.","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to mark the task with index `1` as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"amosting"},"content":" `mark 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"amosting"},"content":"- Task with index `1` is marked as done. Task marked done will have a visible `X` in the 2\u003csup\u003end\u003c/sup\u003e square bracket.","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"amosting"},"content":"Roger that Sir, I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"amosting"},"content":"\t[T][X][M] build Mark III suit","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"amosting"},"content":"### `uncheck` - Unchecks an existing task marked as done","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"amosting"},"content":"Jarvis unchecks the task previously marked as done with the specified index as not done.","lastModifiedDate":"2023-09-22"},{"lineNumber":129,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":130,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":131,"author":{"gitId":"amosting"},"content":"`uncheck INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"amosting"},"content":"`INDEX`: Index of the task to be unchecked.","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to uncheck the task with index `1` as not done.","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"amosting"},"content":" `uncheck 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":138,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"amosting"},"content":"- Task with index `1` is marked as not done. Task marked not done will have an existing `X` in the 2\u003csup\u003end\u003c/sup\u003e square bracket removed.","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"amosting"},"content":"Roger that Sir, I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"amosting"},"content":"\t[T][ ][M] build Mark III suit","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"amosting"},"content":"### `list` - Lists all existing tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":146,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":147,"author":{"gitId":"amosting"},"content":"Jarvis lists all existing tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":148,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":149,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":150,"author":{"gitId":"amosting"},"content":"`list` `","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to list all existing tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":154,"author":{"gitId":"amosting"},"content":" `list`","lastModifiedDate":"2023-09-22"},{"lineNumber":155,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":156,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":157,"author":{"gitId":"amosting"},"content":"- A list of all existing tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":158,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"amosting"},"content":"Roger that Sir, I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"amosting"},"content":"1.[T][ ][H] read book ","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"amosting"},"content":"2.[T][X][H] read bible ","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"amosting"},"content":"3.[D][ ][H] return book (by: Monday) ","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"amosting"},"content":"4.[E][ ][H] project meeting (from: Monday 2pm to: 4pm)","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":166,"author":{"gitId":"amosting"},"content":"### `delete` - Deletes an existing task","lastModifiedDate":"2023-09-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":168,"author":{"gitId":"amosting"},"content":"Jarvis deletes the task with the specified index.","lastModifiedDate":"2023-09-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":170,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"amosting"},"content":"`delete INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":172,"author":{"gitId":"amosting"},"content":"`INDEX`: Index of the task to be deleted.","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":174,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to delete the task with index `1`.","lastModifiedDate":"2023-09-22"},{"lineNumber":176,"author":{"gitId":"amosting"},"content":" `delete 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"amosting"},"content":"- Task with index `1` is deleted. Deleted tasks will no longer appear when the command `list` is entered.","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"amosting"},"content":"Alright Sir, I\u0027ve removed this task:","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"amosting"},"content":"\t[T][X][M] build Mark III suit","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"amosting"},"content":"You have now 2 tasks in the list Sir.","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":186,"author":{"gitId":"amosting"},"content":"### `find` - Searches existing tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":188,"author":{"gitId":"amosting"},"content":"Jarvis finds all the task with the specified keyword.","lastModifiedDate":"2023-09-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":190,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"amosting"},"content":"`find KEYWORD`","lastModifiedDate":"2023-09-22"},{"lineNumber":192,"author":{"gitId":"amosting"},"content":"`KEYWORD`: Keyword to be searched.","lastModifiedDate":"2023-09-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":194,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":195,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to delete the task with index `1`.","lastModifiedDate":"2023-09-22"},{"lineNumber":196,"author":{"gitId":"amosting"},"content":" `find book`","lastModifiedDate":"2023-09-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":198,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":199,"author":{"gitId":"amosting"},"content":"- Task(s) with the containing the word \"search\" will be shown in a list.","lastModifiedDate":"2023-09-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":"``` ","lastModifiedDate":"2021-07-17"},{"lineNumber":201,"author":{"gitId":"amosting"},"content":"Here are the matching task in your list Sir:","lastModifiedDate":"2023-09-22"},{"lineNumber":202,"author":{"gitId":"amosting"},"content":"1.[D][][M] return book (by: Monday)","lastModifiedDate":"2023-09-22"},{"lineNumber":203,"author":{"gitId":"amosting"},"content":"2.[T][][M] return book","lastModifiedDate":"2023-09-22"},{"lineNumber":204,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"amosting":177,"-":27}},{"path":"src/main/java/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" private Label dialog;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" private void flip() {","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" db.flip();","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" return db;","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":59}},{"path":"src/main/java/Jarvis/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" * Represents a deadline task that extends the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" * The Deadline class is a subclass of the Task class and has 2 additional attributes, by and dateby.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" * By represents the time to complete the task by.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" * dateBy is by in a Java LocalDate if the formatting of by is correct.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" protected String by;","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" protected LocalDate dateBy;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" * Constructs a new Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" * @param description description of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" * @param by when to complete the task by.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" public Deadline(String description, String by, String priority) {","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" this.priority \u003d mapPriority(priority);","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" stringToDate();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" * Checks and converts the by string to a valid Java LocalDate if the format is correct","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" public void stringToDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" Pattern datePattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" \"^((2000|2400|2800|(19|2[0-9])(0[48]|[2468][048]|[13579][26]))-02-29)$\"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" + \"|^(((19|2[0-9])[0-9]{2})-02-(0[1-9]|1[0-9]|2[0-8]))$\"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" + \"|^(((19|2[0-9])[0-9]{2})-(0[13578]|10|12)-(0[1-9]|[12][0-9]|3[01]))$\"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" + \"|^(((19|2[0-9])[0-9]{2})-(0[469]|11)-(0[1-9]|[12][0-9]|30))$\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" Matcher dateTimeMatcher \u003d datePattern.matcher(this.by);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" if (!dateTimeMatcher.matches()) { // if datetime doesn\u0027t match, do nothing","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" this.dateBy \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" Pattern dateTimePattern2 \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" \"(\\\\d{4})-(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])\"); // YYYY-MM-DD","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" Matcher dateTimePattern2Matcher \u003d dateTimePattern2.matcher(this.by);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" dateTimePattern2Matcher.matches();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" int day \u003d Integer.parseInt(dateTimePattern2Matcher.group(3));","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" int month \u003d Integer.parseInt(dateTimePattern2Matcher.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" int year \u003d Integer.parseInt(dateTimePattern2Matcher.group(1));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" this.dateBy \u003d LocalDate.of(year, month, day);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" * Converts the task to a user-friendly string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":" * @return A string representation of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":" if (dateBy \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":" String formattedDate \u003d this.dateBy.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formattedDate + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":75}},{"path":"src/main/java/Jarvis/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" * Represents an event task with a start time and an end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" * The Event class is a subclass of the Task class and has 2 additional attributes,","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" * from and to, the represent the start time and end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" protected String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" protected String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" * Constructs a new Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" * @param from The starting time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" * @param to The ending time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" public Event(String description, String from, String to, String priority) {","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" this.priority \u003d mapPriority(priority);","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" * Converts the task to a user-friendly string representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":37}},{"path":"src/main/java/Jarvis/IncorrectJarvisCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"public class IncorrectJarvisCommandException extends JarvisException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" public IncorrectJarvisCommandException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":7}},{"path":"src/main/java/Jarvis/InvalidTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"public class InvalidTaskNumberException extends JarvisException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" public InvalidTaskNumberException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":7}},{"path":"src/main/java/Jarvis/Jarvis.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" * Main application class for the Jarvis chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" * This class is responsible initialising the task list, loading and saving tasks in storage and","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" * running the main event loop of the application. It delegates command parsing to the Parser class and storage","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" * operations to the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":"public class Jarvis {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" private static Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" private static Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" * Constructs a new Jarvis chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" * @param fileName Name of the file to store the task data in.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" public Jarvis(String fileName) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" // getting the file path to the save file","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" String home \u003d System.getProperty(\"user.home\");","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" Path pathToSaveFile \u003d Paths.get(home, \"Desktop\", \"CS2103T\", \"IP\", \"data\", fileName);","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" assert !pathToSaveFile.toString().isEmpty() : \"pathToSaveFile in Jarvis() does not contain a file path\";","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" storage \u003d new Storage(pathToSaveFile.toString());","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" return parser.parseCommand(storage, tasks, input);","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" } catch (IncorrectJarvisCommandException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" return Ui.getListOfCommands(parser.validCommands, e);","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" } catch (InvalidTaskNumberException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" return Ui.respond(e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" \" There are currently \" + tasks.countTask() + \" tasks in the list.\");","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" return Ui.respond(\"\");","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"amosting":50}},{"path":"src/main/java/Jarvis/JarvisException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"public class JarvisException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" public JarvisException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":7}},{"path":"src/main/java/Jarvis/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" * Responsible for parsing user input, executing commands and handling any exceptions","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" * This class takes care of interpreting user commands and then calling the appropriate methods to perform","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" * the actions described by those commands. It also handles any exceptions and calls the appropriate methods","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" * to print the details of the exception for the user to read.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" protected ArrayList\u003cString\u003e validCommands; // list of valid commands","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" * Constructs a new Parser object.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" public Parser() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" validCommands \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" addValidCommands();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" * Adds the list of valid commands into the validCommands ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" private void addValidCommands() {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" validCommands.add(\"list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" validCommands.add(\"bye\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" validCommands.add(\"mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" validCommands.add(\"uncheck\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" validCommands.add(\"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" validCommands.add(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" validCommands.add(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" validCommands.add(\"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-14"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" * Parses the priority string provided by the user to a string understandable by the program","lastModifiedDate":"2023-09-14"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" * @param priority contains priority of the task, either low, medium or high","lastModifiedDate":"2023-09-14"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" * @return L, M or H representing low, medium or high respectively","lastModifiedDate":"2023-09-14"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-14"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" private String parsePriority(String priority) {","lastModifiedDate":"2023-09-14"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" if (priority.equals(\"low\")) {","lastModifiedDate":"2023-09-14"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" return \"L\";","lastModifiedDate":"2023-09-14"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" } else if (priority.equals(\"medium\")) {","lastModifiedDate":"2023-09-14"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" return \"M\";","lastModifiedDate":"2023-09-14"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-14"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" return \"H\";","lastModifiedDate":"2023-09-14"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" * checks if the user inputted a valid command in the validCommand ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" * @param inputCommand commands that the user inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":" * @return the valid command that the user inputted, an empty string otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" // checks if command is valid and throws Jarvis.IncorrectJarvisCommandException","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" private String isValidCommand(String inputCommand) {","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":" assert !inputCommand.isEmpty() : \"inputCommand parameter in isValidCommand() is an empty string\";","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":" // check if command is one of the valid keywords","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":" boolean isValidCommand \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":" String validInputCommand \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":" for (String validCommand: validCommands) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":" if (inputCommand.contains(validCommand)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":" isValidCommand \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":" validInputCommand \u003d validCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"amosting"},"content":" if (!isValidCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"amosting"},"content":" throw new IncorrectJarvisCommandException(","lastModifiedDate":"2023-09-05"},{"lineNumber":81,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the command \" + inputCommand + \" is not a valid command.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":82,"author":{"gitId":"amosting"},"content":" } catch (IncorrectJarvisCommandException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":84,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"amosting"},"content":" return validInputCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"amosting"},"content":" * checks if the command the user inputted has a wrong format, if the format of the command is wrong,","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"amosting"},"content":" * print the details to the screen for the user to know how to correct it. This method assumes that","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"amosting"},"content":" * isValidCommand has been run before this and the user has used a valid command. It just checks if","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"amosting"},"content":" * the formatting of the command is correct.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"amosting"},"content":" * @param inputCommand the command the user inputted","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"amosting"},"content":" * @param validInputCommand the valid command which the user inputted","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"amosting"},"content":" // identifies which command has wrong formatting and prints feedback to user","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"amosting"},"content":" public String isWrongFormat(String inputCommand, String validInputCommand) {","lastModifiedDate":"2023-09-13"},{"lineNumber":100,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":101,"author":{"gitId":"amosting"},"content":" assert !inputCommand.isEmpty() : \"inputCommand parameter in isWrongFormat() is an empty string\";","lastModifiedDate":"2023-09-13"},{"lineNumber":102,"author":{"gitId":"amosting"},"content":" assert !validInputCommand.isEmpty() : \"validInputCommand parameter in isWrongFormat() is an empty string\";","lastModifiedDate":"2023-09-13"},{"lineNumber":103,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":104,"author":{"gitId":"amosting"},"content":" // since command is valid, check if formatting of the command is correct","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"amosting"},"content":" boolean markMatch \u003d inputCommand.matches(\"mark \\\\d+\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"amosting"},"content":" boolean uncheckMatch \u003d inputCommand.matches(\"unmark \\\\d+\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"amosting"},"content":" boolean todoMatch \u003d inputCommand.matches(\"todo .+ (low|medium|high)\");","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"amosting"},"content":" boolean deadlineMatch \u003d inputCommand.matches(\"deadline .+ /.+ (low|medium|high)\");","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"amosting"},"content":" boolean eventMatch \u003d inputCommand.matches(\"event .+ /.+ /.+ (low|medium|high)\");","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"amosting"},"content":" if (validInputCommand.equals(\"mark\") \u0026\u0026 !markMatch) { // if mark command but wrong format","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"amosting"},"content":" throw new WrongJarvisCommandFormatException(","lastModifiedDate":"2023-09-05"},{"lineNumber":114,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the format of the mark command you provided is incorrect.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":115,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"amosting"},"content":" return Ui.getWrongFormatMessage(\"mark\", e);","lastModifiedDate":"2023-09-07"},{"lineNumber":117,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"amosting"},"content":" } else if (validInputCommand.equals(\"uncheck\") \u0026\u0026 !uncheckMatch) { // if uncheck command but wrong format","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"amosting"},"content":" throw new WrongJarvisCommandFormatException(","lastModifiedDate":"2023-09-05"},{"lineNumber":121,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the format of the uncheck command you provided is incorrect.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":122,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"amosting"},"content":" return Ui.getWrongFormatMessage(\"uncheck\", e);","lastModifiedDate":"2023-09-07"},{"lineNumber":124,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"amosting"},"content":" } else if (validInputCommand.equals(\"todo\") \u0026\u0026 !todoMatch) { // if todo command but wrong format","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"amosting"},"content":" throw new WrongJarvisCommandFormatException(","lastModifiedDate":"2023-09-05"},{"lineNumber":128,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the format of the todo command you provided is incorrect.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":129,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"amosting"},"content":" return Ui.getWrongFormatMessage(\"todo\", e);","lastModifiedDate":"2023-09-07"},{"lineNumber":131,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"amosting"},"content":" } else if (validInputCommand.equals(\"deadline\") \u0026\u0026 !deadlineMatch) { // if deadline command but wrong format","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"amosting"},"content":" throw new WrongJarvisCommandFormatException(","lastModifiedDate":"2023-09-05"},{"lineNumber":135,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the format of the deadline command you provided is incorrect.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":136,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"amosting"},"content":" return Ui.getWrongFormatMessage(\"deadline\", e);","lastModifiedDate":"2023-09-07"},{"lineNumber":138,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"amosting"},"content":" } else { // if event command but wrong format","lastModifiedDate":"2023-09-07"},{"lineNumber":140,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"amosting"},"content":" throw new WrongJarvisCommandFormatException(","lastModifiedDate":"2023-09-05"},{"lineNumber":142,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the format of the event command you provided is incorrect.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":143,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"amosting"},"content":" return Ui.getWrongFormatMessage(\"event\", e);","lastModifiedDate":"2023-09-07"},{"lineNumber":145,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"amosting"},"content":" * Parses and executes command specified in the given user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"amosting"},"content":" * @param storage The storage object responsible for task storage operations.","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"amosting"},"content":" * @param tasks The task list that holds all tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"amosting"},"content":" * @param userInput The string input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"amosting"},"content":" * @throws IncorrectJarvisCommandException If the command is incorrect.","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"amosting"},"content":" * @throws InvalidTaskNumberException If the task number is out of the range of the number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"amosting"},"content":" * @throws WrongJarvisCommandFormatException If the command is correct but its formatted incorrectly.","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"amosting"},"content":" public String parseCommand(Storage storage, TaskList tasks, String userInput) throws","lastModifiedDate":"2023-09-13"},{"lineNumber":160,"author":{"gitId":"amosting"},"content":" IncorrectJarvisCommandException, InvalidTaskNumberException, WrongJarvisCommandFormatException {","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":162,"author":{"gitId":"amosting"},"content":" Pattern todoPattern \u003d Pattern.compile(\"(todo) (.+) (low|medium|high)\");","lastModifiedDate":"2023-09-14"},{"lineNumber":163,"author":{"gitId":"amosting"},"content":" Pattern deadlinePattern \u003d Pattern.compile(\"(deadline) (.+) /by (.+) (low|medium|high)\");","lastModifiedDate":"2023-09-14"},{"lineNumber":164,"author":{"gitId":"amosting"},"content":" Pattern eventPattern \u003d Pattern.compile(\"(event) (.+) /from (.+) /to (.+) (low|medium|high)\");","lastModifiedDate":"2023-09-14"},{"lineNumber":165,"author":{"gitId":"amosting"},"content":" Pattern deletePattern \u003d Pattern.compile(\"(delete) (\\\\d+)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"amosting"},"content":" Pattern findPattern \u003d Pattern.compile(\"(find) (.+)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"amosting"},"content":" Matcher todoMatcher \u003d todoPattern.matcher(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"amosting"},"content":" Matcher deadlineMatcher \u003d deadlinePattern.matcher(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"amosting"},"content":" Matcher eventMatcher \u003d eventPattern.matcher(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"amosting"},"content":" Matcher deleteMatcher \u003d deletePattern.matcher(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"amosting"},"content":" Matcher findMatcher \u003d findPattern.matcher(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"amosting"},"content":" String nameOfValidCommand \u003d isValidCommand(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"amosting"},"content":" if (userInput.matches(\"list\")) { // if \"list\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"amosting"},"content":" return Ui.getTaskList(tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":178,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"amosting"},"content":" } else if (userInput.matches(\"bye\")) { // if \"bye\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"amosting"},"content":" storage.deleteContents();","lastModifiedDate":"2023-09-07"},{"lineNumber":181,"author":{"gitId":"amosting"},"content":" storage.save(tasks); // save task list to data file after bye is entered","lastModifiedDate":"2023-09-07"},{"lineNumber":182,"author":{"gitId":"amosting"},"content":" return Ui.getByeMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":183,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"amosting"},"content":" } else if (userInput.matches(\"mark \\\\d+\")","lastModifiedDate":"2023-09-05"},{"lineNumber":185,"author":{"gitId":"amosting"},"content":" || userInput.matches(\"uncheck \\\\d+\")) { // if \"mark\" or \"uncheck\" is entered","lastModifiedDate":"2023-09-05"},{"lineNumber":186,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"amosting"},"content":" int taskNum \u003d Integer.parseInt(userInput.substring(userInput.length() - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"amosting"},"content":" if (!tasks.isValidTaskNumber(taskNum)) {","lastModifiedDate":"2023-09-07"},{"lineNumber":189,"author":{"gitId":"amosting"},"content":" return null;","lastModifiedDate":"2023-09-07"},{"lineNumber":190,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":191,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"amosting"},"content":" Task currentTask \u003d tasks.getTask(taskNum - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"amosting"},"content":" if (userInput.matches(\"uncheck \\\\d+\")) { // if \"uncheck\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"amosting"},"content":" currentTask.setDone(false);","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"amosting"},"content":" return Ui.getUncheckMessage(currentTask);","lastModifiedDate":"2023-09-07"},{"lineNumber":196,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"amosting"},"content":" } else { // if \"mark\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"amosting"},"content":" currentTask.setDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"amosting"},"content":" return Ui.getMarkMessage(currentTask);","lastModifiedDate":"2023-09-07"},{"lineNumber":200,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"amosting"},"content":" } else if (todoMatcher.matches()","lastModifiedDate":"2023-09-05"},{"lineNumber":203,"author":{"gitId":"amosting"},"content":" || deadlineMatcher.matches()","lastModifiedDate":"2023-09-05"},{"lineNumber":204,"author":{"gitId":"amosting"},"content":" || eventMatcher.matches()) { // if task command is entered","lastModifiedDate":"2023-09-05"},{"lineNumber":205,"author":{"gitId":"amosting"},"content":" Task newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"amosting"},"content":" if (todoMatcher.matches()) { // if \"todo\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"amosting"},"content":" String taskDescription \u003d todoMatcher.group(2);","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"amosting"},"content":" String priority \u003d todoMatcher.group(3);","lastModifiedDate":"2023-09-14"},{"lineNumber":209,"author":{"gitId":"amosting"},"content":" newTask \u003d new ToDo(taskDescription, parsePriority(priority));","lastModifiedDate":"2023-09-14"},{"lineNumber":210,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":211,"author":{"gitId":"amosting"},"content":" } else if (deadlineMatcher.matches()) { // if \"deadline\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"amosting"},"content":" String taskDescription \u003d deadlineMatcher.group(2);","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"amosting"},"content":" String by \u003d deadlineMatcher.group(3);","lastModifiedDate":"2023-08-31"},{"lineNumber":214,"author":{"gitId":"amosting"},"content":" String priority \u003d deadlineMatcher.group(4);","lastModifiedDate":"2023-09-14"},{"lineNumber":215,"author":{"gitId":"amosting"},"content":" newTask \u003d new Deadline(taskDescription, by, parsePriority(priority));","lastModifiedDate":"2023-09-14"},{"lineNumber":216,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"amosting"},"content":" } else { // if \"event\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"amosting"},"content":" String taskDescription \u003d eventMatcher.group(2);","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"amosting"},"content":" String from \u003d eventMatcher.group(3);","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"amosting"},"content":" String to \u003d eventMatcher.group(4);","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"amosting"},"content":" String priority \u003d eventMatcher.group(5);","lastModifiedDate":"2023-09-14"},{"lineNumber":222,"author":{"gitId":"amosting"},"content":" newTask \u003d new Event(taskDescription, from, to, parsePriority(priority));","lastModifiedDate":"2023-09-14"},{"lineNumber":223,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":224,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":225,"author":{"gitId":"amosting"},"content":" tasks.appendTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"amosting"},"content":" return Ui.getTaskMessage(newTask, tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":227,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"amosting"},"content":" } else if (deleteMatcher.matches()) { // if delete is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"amosting"},"content":" int taskNum \u003d Integer.parseInt(deleteMatcher.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"amosting"},"content":" if (tasks.isValidTaskNumber(taskNum)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"amosting"},"content":" tasks.deleteTask(taskNum - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"amosting"},"content":" Task deletedTask \u003d tasks.getTask(taskNum);","lastModifiedDate":"2023-09-22"},{"lineNumber":233,"author":{"gitId":"amosting"},"content":" return Ui.getDeleteMessage(deletedTask ,tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":234,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"amosting"},"content":" } else if (findMatcher.matches()) { // if find is entered","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"amosting"},"content":" String keyword \u003d findMatcher.group(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"amosting"},"content":" return Ui.getFoundTaskMessage(tasks.findTask(keyword));","lastModifiedDate":"2023-09-07"},{"lineNumber":239,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"amosting"},"content":" } else { // if none of the above commands go through","lastModifiedDate":"2023-09-07"},{"lineNumber":241,"author":{"gitId":"amosting"},"content":" return isWrongFormat(userInput, nameOfValidCommand);","lastModifiedDate":"2023-09-07"},{"lineNumber":242,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":243,"author":{"gitId":"amosting"},"content":" return null;","lastModifiedDate":"2023-09-07"},{"lineNumber":244,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":245,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"amosting":245}},{"path":"src/main/java/Jarvis/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" private File dataFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" assert !filePath.isEmpty() : \"filepath in Storage() is an empty string\";","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" this.dataFile \u003d new File(filePath);","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" this.dataFile.createNewFile();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" System.err.println(\"An error occurred: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" // load data from dataFile","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" public String load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" String fullData \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(this.dataFile))) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" while ((line \u003d reader.readLine()) !\u003d null) { // append each line and a \\n to the fullData variable","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" if (fullData.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" fullData \u003d line;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" fullData \u003d fullData + \"\\n\" + line;","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" return fullData;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" // delete contents in dataFile","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" public void deleteContents() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" try (FileWriter writer \u003d new FileWriter(this.dataFile)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" // Write an empty string to the file","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" writer.write(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" System.err.println(\"An error occurred: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" // write tasks in taskList to dateFile","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" for (int i \u003d 0; i \u003c tasks.countTask(); i++) { // writing the string of each task to the data file","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" Task currentTask \u003d tasks.getTask(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" try (FileWriter dataFileWriter \u003d new FileWriter(this.dataFile, true)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" dataFileWriter.write(currentTask.toString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":" System.err.println(\"An error occurred: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"amosting":63}},{"path":"src/main/java/Jarvis/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" * Abstract class representing a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" * This class serves as the parent for different types of tasks to inherit from and encapsulates","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" * the basic information and operations related to a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" protected priorityLevels priority;","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" protected enum priorityLevels {","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" LOW,","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" MEDIUM,","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" HIGH","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" * Constructs a new Task with the given description","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" * @param description The description of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-14"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" * Maps the priority given to its respective enum value","lastModifiedDate":"2023-09-14"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" * @param priority String representing the priority, either L, M or H","lastModifiedDate":"2023-09-14"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" * @return the corresponding enum value","lastModifiedDate":"2023-09-14"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-14"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" public priorityLevels mapPriority(String priority) {","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" if (priority.equals(\"L\")) {","lastModifiedDate":"2023-09-14"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" return priorityLevels.LOW;","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" } else if (priority.equals(\"M\")) {","lastModifiedDate":"2023-09-14"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" return priorityLevels.MEDIUM;","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" return priorityLevels.HIGH;","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" public void setPriority(String priority) {","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" this.priority \u003d mapPriority(priority);","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" * Sets if the task is done or not","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" * @param done true if task is done, false otherwise","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" this.isDone \u003d done;","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" * Abstract method for string to date conversion","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" public void stringToDate() {}","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":" * Converts the task to a user-friendly string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":" * @return A string representation of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":" public String toString() { // generates the string of marking and task","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":" String marking \u003d \"\";","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":" marking \u003d \"[X]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" marking \u003d \"[ ]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":77,"author":{"gitId":"amosting"},"content":" String priority \u003d \"\";","lastModifiedDate":"2023-09-14"},{"lineNumber":78,"author":{"gitId":"amosting"},"content":" if (this.priority \u003d\u003d priorityLevels.LOW) {","lastModifiedDate":"2023-09-14"},{"lineNumber":79,"author":{"gitId":"amosting"},"content":" priority \u003d \"[L]\";","lastModifiedDate":"2023-09-14"},{"lineNumber":80,"author":{"gitId":"amosting"},"content":" } else if (this.priority \u003d\u003d priorityLevels.MEDIUM) {","lastModifiedDate":"2023-09-14"},{"lineNumber":81,"author":{"gitId":"amosting"},"content":" priority \u003d \"[M]\";","lastModifiedDate":"2023-09-14"},{"lineNumber":82,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-14"},{"lineNumber":83,"author":{"gitId":"amosting"},"content":" priority \u003d \"[H]\";","lastModifiedDate":"2023-09-14"},{"lineNumber":84,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":85,"author":{"gitId":"amosting"},"content":" return marking + priority + \" \" + this.description;","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"amosting":87}},{"path":"src/main/java/Jarvis/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" * Class representing a list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" * This class encapsulates the list of tasks and provides methods for adding, removing, and retrieving tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" * Constructs a new TaskList object from saved data.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" * @param tasks The string that holds the saved data.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" public TaskList(String tasks) { // tasks is a string","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-09-14"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" return;","lastModifiedDate":"2023-09-14"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" String[] stringTasks \u003d tasks.split(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" Pattern todoPattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" \"\\\\[T\\\\]\\\\[(X|\\\\s)\\\\]\\\\[(L|M|H)\\\\] (.+)\"); // [T][-][L/M/H] xxxx","lastModifiedDate":"2023-09-14"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" Pattern deadlinePattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" \"\\\\[D\\\\]\\\\[(X|\\\\s)\\\\]\\\\[(L|M|H)\\\\] (.+) \\\\(by: (.+)\\\\)\"); // [D][-][L/M/H] xxxx (by: xxxxxx)","lastModifiedDate":"2023-09-14"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" Pattern eventPattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" \"\\\\[E\\\\]\\\\[(X|\\\\s)\\\\]\\\\[(L|M|H)\\\\] (.+) \\\\(from: (.+) to: (.+)\\\\)\"); // [E][-][L/M/H] xxxx (from: xxxxxx to: xxxxxx)","lastModifiedDate":"2023-09-14"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" // [E][ ][H] project meeting (from: Monday 2pm to: 4pm)","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" for (int i \u003d 0; i \u003c stringTasks.length; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" Matcher todoMatcher \u003d todoPattern.matcher(stringTasks[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" Matcher deadlineMatcher \u003d deadlinePattern.matcher(stringTasks[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" Matcher eventMatcher \u003d eventPattern.matcher(stringTasks[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" Task newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" if (todoMatcher.matches()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" String description \u003d todoMatcher.group(3);","lastModifiedDate":"2023-09-14"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" String priority \u003d todoMatcher.group(2);","lastModifiedDate":"2023-09-14"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" newTask \u003d new ToDo(description, priority);","lastModifiedDate":"2023-09-14"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" if (todoMatcher.group(1).equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" newTask.setDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" } else if (deadlineMatcher.matches()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" String description \u003d deadlineMatcher.group(3);","lastModifiedDate":"2023-09-14"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" String by \u003d deadlineMatcher.group(4);","lastModifiedDate":"2023-09-14"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" String priority \u003d deadlineMatcher.group(2);","lastModifiedDate":"2023-09-14"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" newTask \u003d new Deadline(description, by, priority);","lastModifiedDate":"2023-09-14"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" if (deadlineMatcher.group(1).equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" newTask.setDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":" eventMatcher.matches();","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" String description \u003d eventMatcher.group(3);","lastModifiedDate":"2023-09-14"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" String from \u003d eventMatcher.group(4);","lastModifiedDate":"2023-09-14"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" String to \u003d eventMatcher.group(5);","lastModifiedDate":"2023-09-14"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":" String priority \u003d eventMatcher.group(2);","lastModifiedDate":"2023-09-14"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":" newTask \u003d new Event(description, from, to, priority);","lastModifiedDate":"2023-09-14"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":" if (eventMatcher.group(1).equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":" newTask.setDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":" taskList.add(newTask); // add the task to the task list","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" public void appendTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"amosting"},"content":" public void addTask(Task task, int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"amosting"},"content":" this.taskList.add(index, task);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"amosting"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"amosting"},"content":" this.taskList.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"amosting"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"amosting"},"content":" return this.taskList.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"amosting"},"content":" public int countTask() {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"amosting"},"content":" return taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"amosting"},"content":" // function checks if task number is valid and throws Jarvis.InvalidTaskNumberException","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"amosting"},"content":" public boolean isValidTaskNumber(int taskNum) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"amosting"},"content":" final String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"amosting"},"content":" boolean isValid \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"amosting"},"content":" if (taskNum \u003c 0 || taskNum \u003e this.taskList.size()) { // check if task number is of valid range","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"amosting"},"content":" throw new InvalidTaskNumberException(\"Apologies Sir, the task number you provided is out of range.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"amosting"},"content":" } catch (InvalidTaskNumberException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"amosting"},"content":" isValid \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"amosting"},"content":" return isValid;","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"amosting"},"content":" public ArrayList\u003cTask\u003e findTask(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"amosting"},"content":" ArrayList\u003cTask\u003e foundTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":110,"author":{"gitId":"amosting"},"content":" for (Task task: taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":111,"author":{"gitId":"amosting"},"content":" if (task.description.contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":112,"author":{"gitId":"amosting"},"content":" foundTasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"amosting"},"content":" return foundTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"amosting":117}},{"path":"src/main/java/Jarvis/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" * Represents a ToDo task that extends the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" * The ToDo class is a subclass of the Task class","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" * Constructs a new ToDo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" * @param description description of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" public ToDo(String description, String priority) {","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" this.priority \u003d mapPriority(priority);","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" * Converts the task to a user-friendly string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" * @return A string representation of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":30}},{"path":"src/main/java/Jarvis/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" private static final String name \u003d \"Jarvis\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" private static final String greeting \u003d \"Good day Sir! I\u0027m \";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" private static final String question \u003d \"How can I help you today Sir?\";","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" private static final String signOff \u003d \"Good bye Sir!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" private static final String listInforming \u003d \"Here are the tasks in your list Sir:\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" private static final String markInforming \u003d \"Roger that Sir, I\u0027ve marked this task as done:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" private static final String uncheckInforming \u003d \"Noted Sir, I\u0027ve marked this task as NOT done yet:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" private static final String taskInforming \u003d \"As you please Sir, I\u0027ve added the task:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" private static final String deleteInforming \u003d \"Alright Sir, I\u0027ve removed this task:\";","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" private static final String findInforming \u003d \"Here are the matching tasks in your list Sir:\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" public static String printGreeting() {","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" return greeting + name + \"!\" + \"\\n\" + question;","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" public static String getByeMessage() {","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" return signOff;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" public static String getMarkMessage(Task currentTask) {","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" return markInforming + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" \" \" + currentTask.toString();","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" public static String getUncheckMessage(Task currentTask) {","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" return uncheckInforming + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" \" \" + currentTask.toString();","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" public static String getListOfCommands(ArrayList\u003cString\u003e validCommands, Exception e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" String returnString \u003d e.getMessage() + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" for (int i \u003d 0; i \u003c validCommands.size(); i++) { // listing out the current task","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" int numbering \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" returnString \u003d returnString + \" \" + numbering + \". \" + validCommands.get(i) + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" return returnString;","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" public static String getWrongFormatMessage(String command, Exception e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" assert command.matches(\"(?i:mark|uncheck|todo|deadline|event)\"): \"Command is not valid\";","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" return e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" \" The following is the correct format:\" + \"\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" + \" mark \u003ctask number\u003e\";","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" } else if (command.equals(\"uncheck\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" return e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" \" The following is the correct format:\" + \"\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" + \" uncheck \u003ctask number\u003e\";","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" } else if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" return e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" \" The following is the correct format:\" + \"\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":" + \" todo \u003cdescription\u003e \u003cpriority: low/medium/high\u003e\";","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" return e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" \" The following is the correct format:\" + \"\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":" + \" deadline \u003cdescription\u003e /by \u003cdate or time\u003e \u003cpriority: low/medium/high\u003e\";","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-07"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":" return e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":" \" The following is the correct format:\" + \"\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":" + \" event \u003cdescription\u003e /from \u003cdate or time\u003e /to \u003cdate or time\u003e \u003cpriority: low/medium/high\u003e\";","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":" public static String getTaskMessage(Task task,TaskList tasks) {","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":" return taskInforming + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":" \" \" + task.toString() + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" \"You have now \" + tasks.countTask() + \" tasks in the list Sir.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":76,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"amosting"},"content":" public static String getDeleteMessage(Task task, TaskList tasks) {","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"amosting"},"content":" return deleteInforming + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"amosting"},"content":" \" \" + task.toString() + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"amosting"},"content":" \"You have now \" + tasks.countTask() + \" tasks in the list Sir.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"amosting"},"content":" public static String getTaskList(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":84,"author":{"gitId":"amosting"},"content":" String returnString \u003d listInforming + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":85,"author":{"gitId":"amosting"},"content":" for (int i \u003d 0; i \u003c tasks.countTask(); i++) { // listing out the current task","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"amosting"},"content":" int count \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"amosting"},"content":" Task currentTask \u003d tasks.getTask(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"amosting"},"content":" returnString \u003d returnString + count + \".\" + currentTask.toString() + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":89,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"amosting"},"content":" return returnString;","lastModifiedDate":"2023-09-07"},{"lineNumber":91,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"amosting"},"content":" public static String getFoundTaskMessage(ArrayList\u003cTask\u003e foundTasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":94,"author":{"gitId":"amosting"},"content":" String returnString \u003d findInforming + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":95,"author":{"gitId":"amosting"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) { // listing out the current task","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"amosting"},"content":" int count \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"amosting"},"content":" Task currentTask \u003d foundTasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"amosting"},"content":" returnString \u003d returnString + count + \".\" + currentTask.toString() + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":99,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":100,"author":{"gitId":"amosting"},"content":" return returnString;","lastModifiedDate":"2023-09-07"},{"lineNumber":101,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"amosting"},"content":" public static String respond(String message) {","lastModifiedDate":"2023-09-07"},{"lineNumber":104,"author":{"gitId":"amosting"},"content":" return message;","lastModifiedDate":"2023-09-07"},{"lineNumber":105,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":106,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"amosting":106}},{"path":"src/main/java/Jarvis/WrongJarvisCommandFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"public class WrongJarvisCommandFormatException extends JarvisException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" public WrongJarvisCommandFormatException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":7}},{"path":"src/main/java/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"public class Launcher {","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":10}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import Jarvis.Jarvis;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" private Jarvis jarvis \u003d new Jarvis(\"data.txt\");","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setJarvis(jarvis);","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" stage.show();","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":27}},{"path":"src/main/java/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"import Jarvis.Jarvis;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" private Jarvis jarvis;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/tony_stark.jpg\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/jarvis.jpeg\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" public void initialize() {","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" public void setJarvis(Jarvis jarvis) {","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" this.jarvis \u003d jarvis;","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" String response \u003d this.jarvis.getResponse(input);","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" );","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" userInput.clear();","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":50}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"MainWindow\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":19}},{"path":"src/test/java/Jarvis/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" public void deadline_correctInitialisation_toStringCorrect() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" Deadline deadline \u003d new Deadline(\"make helmet\", \"2023-09-02\", \"low\");","lastModifiedDate":"2023-09-14"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" assertEquals(\"[D][ ][L] make helmet (by: Sep 2 2023)\", deadline.toString());","lastModifiedDate":"2023-09-14"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"amosting":12}},{"path":"src/test/java/Jarvis/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"public class ToDoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" public void todo_correctInitialisation_toStringCorrect() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" ToDo todo \u003d new ToDo(\"Mark XXVI is ready for you sir\", \"low\");","lastModifiedDate":"2023-09-14"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" assertEquals(\"[T][ ][L] Mark XXVI is ready for you sir\", todo.toString());","lastModifiedDate":"2023-09-14"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"amosting":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"deadline finish assignment /by Saturday","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"todo start on vlog","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"unmark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":11}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"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":"amosting"},"content":"java -classpath ../bin Jarvis \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"amosting":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":"amosting"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"checkstyle {","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" mainClass.set(\"Launcher\")","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" archiveBaseName \u003d \"Jarvis\"","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" archiveFileName \u003d \u0027Jarvis.jar\u0027","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"amosting":24,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"# User Guide for Jarvis Personal Assistant Chatbot","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"---","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"Jarvis is a Personal Assistant Chatbot that helps users to manage their day-to-day tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"---","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"### Creating Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"You can request Jarvis to create 3 different types of tasks:","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":"- ***Todo*** - Tasks that are to be done regardless of time.","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":"- ***Event*** - Tasks that are to be done between specified date / time.","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"- ***Deadline*** - Tasks that are to be done by a certain date / time.","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":"### Marking Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":"You can ask Jarvis to mark your tasks as done once you have completed it them.","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":"### Unchecking Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":"You can request Jarvis to uncheck your marked tasks if you realise the tasks is not done.","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":"### Listing Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":"You can ask Jarvis to list all existing tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":"### Deleting Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":"You can get Jarvis to delete existing tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":"### Finding Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":"You can request Jarvis to search through all your existing task and find task(s) that matches your search keyword.","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":"### Automatic Saving and Loading of Tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":"Jarvis automatically saves tasks into a local file as you enter commands and automatically loads tasks when you start Jarvis.","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":39,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":"---","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":"### `todo` - Adds a new todo task","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":"Jarvis creates a todo task and adds it to the current list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":"`todo DESCRIPTION PRIORITY`","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":"`DESCRIPTION`: Description of the todo task.","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":"`PRIORITY`: Priority of the todo task. It can only be low/medium/high.","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to create a todo with description `build Mark III suit` and `medium` priority.","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" `todo build Mark III suit medium`","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":"- A new todo created and added to the list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":"As you please Sir, I\u0027ve added the task:","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":"\t[T][ ][M] build Mark III suit","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":"You have now 1 tasks in the list Sir.","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":"### `deadline` - Adds a new deadline task","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":"Jarvis creates a deadline task and adds it to the current list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":"`deadline DESCRIPTION /BY PRIORITY`","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":"`DESCRIPTION`: Description of the todo task.","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":"`BY`: Date/time which the deadline task should be completed by.","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":"`PRIORITY`: Priority of the deadline task. It can only be low/medium/high.","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to create a deadline with description `destroy Ultron` and `high` priority.","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" `todo destroy Ultron /by Monday 2pm high`","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"amosting"},"content":"- A new deadline created and added to the list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"amosting"},"content":"As you please Sir, I\u0027ve added the task:","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"amosting"},"content":"\t[D][ ][M] destroy Ultron (by: Monday 2pm)","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"amosting"},"content":"You have now 1 tasks in the list Sir.","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"amosting"},"content":"### `event` - Adds a new event task","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"amosting"},"content":"Jarvis creates a event task and adds it to the current list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"amosting"},"content":"`event DESCRIPTION /from FROM /to TO PRIORITY`","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"amosting"},"content":"`DESCRIPTION`: Description of the todo task.","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"amosting"},"content":"`FROM`: Start date/time of the event task.","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"amosting"},"content":"`TO`: End date/time of the event task.","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"amosting"},"content":"`PRIORITY`: Priority of the event task. It can only be low/medium/high.","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to create a deadline with description `celebration for winning` and `low` priority.","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"amosting"},"content":" `event celebration for winning /from Tuesday 6pm /to Wednesday 2am low`","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"amosting"},"content":"- A new event created and added to the list of tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"amosting"},"content":"As you please Sir, I\u0027ve added the task:","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"amosting"},"content":"\t[E][ ][L] celebration for winning (from: Tuesday 6pm to: Wednesday 2am)","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"amosting"},"content":"You have now 1 tasks in the list Sir.","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"amosting"},"content":"### `mark` - Marks an existing task as done","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"amosting"},"content":"Jarvis marks the task with the specified index as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"amosting"},"content":"`mark INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"amosting"},"content":"`INDEX`: Index of the task to be marked.","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to mark the task with index `1` as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"amosting"},"content":" `mark 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"amosting"},"content":"- Task with index `1` is marked as done. Task marked done will have a visible `X` in the 2\u003csup\u003end\u003c/sup\u003e square bracket.","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"amosting"},"content":"Roger that Sir, I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"amosting"},"content":"\t[T][X][M] build Mark III suit","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"amosting"},"content":"### `uncheck` - Unchecks an existing task marked as done","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"amosting"},"content":"Jarvis unchecks the task previously marked as done with the specified index as not done.","lastModifiedDate":"2023-09-22"},{"lineNumber":129,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":130,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":131,"author":{"gitId":"amosting"},"content":"`uncheck INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"amosting"},"content":"`INDEX`: Index of the task to be unchecked.","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to uncheck the task with index `1` as not done.","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"amosting"},"content":" `uncheck 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":138,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"amosting"},"content":"- Task with index `1` is marked as not done. Task marked not done will have an existing `X` in the 2\u003csup\u003end\u003c/sup\u003e square bracket removed.","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"amosting"},"content":"Roger that Sir, I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"amosting"},"content":"\t[T][ ][M] build Mark III suit","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"amosting"},"content":"### `list` - Lists all existing tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":146,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":147,"author":{"gitId":"amosting"},"content":"Jarvis lists all existing tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":148,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":149,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":150,"author":{"gitId":"amosting"},"content":"`list` `","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to list all existing tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":154,"author":{"gitId":"amosting"},"content":" `list`","lastModifiedDate":"2023-09-22"},{"lineNumber":155,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":156,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":157,"author":{"gitId":"amosting"},"content":"- A list of all existing tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":158,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"amosting"},"content":"Roger that Sir, I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"amosting"},"content":"1.[T][ ][H] read book ","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"amosting"},"content":"2.[T][X][H] read bible ","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"amosting"},"content":"3.[D][ ][H] return book (by: Monday) ","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"amosting"},"content":"4.[E][ ][H] project meeting (from: Monday 2pm to: 4pm)","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"amosting"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":166,"author":{"gitId":"amosting"},"content":"### `delete` - Deletes an existing task","lastModifiedDate":"2023-09-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":168,"author":{"gitId":"amosting"},"content":"Jarvis deletes the task with the specified index.","lastModifiedDate":"2023-09-22"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":170,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"amosting"},"content":"`delete INDEX`","lastModifiedDate":"2023-09-22"},{"lineNumber":172,"author":{"gitId":"amosting"},"content":"`INDEX`: Index of the task to be deleted.","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":174,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to delete the task with index `1`.","lastModifiedDate":"2023-09-22"},{"lineNumber":176,"author":{"gitId":"amosting"},"content":" `delete 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"amosting"},"content":"- Task with index `1` is deleted. Deleted tasks will no longer appear when the command `list` is entered.","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"amosting"},"content":"``` ","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"amosting"},"content":"Alright Sir, I\u0027ve removed this task:","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"amosting"},"content":"\t[T][X][M] build Mark III suit","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"amosting"},"content":"You have now 2 tasks in the list Sir.","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":186,"author":{"gitId":"amosting"},"content":"### `find` - Searches existing tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":188,"author":{"gitId":"amosting"},"content":"Jarvis finds all the task with the specified keyword.","lastModifiedDate":"2023-09-22"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":190,"author":{"gitId":"amosting"},"content":"***Format:***","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"amosting"},"content":"`find KEYWORD`","lastModifiedDate":"2023-09-22"},{"lineNumber":192,"author":{"gitId":"amosting"},"content":"`KEYWORD`: Keyword to be searched.","lastModifiedDate":"2023-09-22"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":194,"author":{"gitId":"amosting"},"content":"***Example of usage:***","lastModifiedDate":"2023-09-22"},{"lineNumber":195,"author":{"gitId":"amosting"},"content":"- Asking Jarvis to delete the task with index `1`.","lastModifiedDate":"2023-09-22"},{"lineNumber":196,"author":{"gitId":"amosting"},"content":" `find book`","lastModifiedDate":"2023-09-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":198,"author":{"gitId":"amosting"},"content":"***Expected outcome:***","lastModifiedDate":"2023-09-22"},{"lineNumber":199,"author":{"gitId":"amosting"},"content":"- Task(s) with the containing the word \"search\" will be shown in a list.","lastModifiedDate":"2023-09-22"},{"lineNumber":200,"author":{"gitId":"-"},"content":"``` ","lastModifiedDate":"2021-07-17"},{"lineNumber":201,"author":{"gitId":"amosting"},"content":"Here are the matching task in your list Sir:","lastModifiedDate":"2023-09-22"},{"lineNumber":202,"author":{"gitId":"amosting"},"content":"1.[D][][M] return book (by: Monday)","lastModifiedDate":"2023-09-22"},{"lineNumber":203,"author":{"gitId":"amosting"},"content":"2.[T][][M] return book","lastModifiedDate":"2023-09-22"},{"lineNumber":204,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"amosting":177,"-":27}},{"path":"src/main/java/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" private Label dialog;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" private void flip() {","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" db.flip();","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" return db;","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":59}},{"path":"src/main/java/Jarvis/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" * Represents a deadline task that extends the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" * The Deadline class is a subclass of the Task class and has 2 additional attributes, by and dateby.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" * By represents the time to complete the task by.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" * dateBy is by in a Java LocalDate if the formatting of by is correct.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" protected String by;","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" protected LocalDate dateBy;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" * Constructs a new Deadline object.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" * @param description description of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" * @param by when to complete the task by.","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" public Deadline(String description, String by, String priority) {","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" this.priority \u003d mapPriority(priority);","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" stringToDate();","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" * Checks and converts the by string to a valid Java LocalDate if the format is correct","lastModifiedDate":"2023-09-01"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" public void stringToDate() {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" Pattern datePattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" \"^((2000|2400|2800|(19|2[0-9])(0[48]|[2468][048]|[13579][26]))-02-29)$\"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" + \"|^(((19|2[0-9])[0-9]{2})-02-(0[1-9]|1[0-9]|2[0-8]))$\"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" + \"|^(((19|2[0-9])[0-9]{2})-(0[13578]|10|12)-(0[1-9]|[12][0-9]|3[01]))$\"","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" + \"|^(((19|2[0-9])[0-9]{2})-(0[469]|11)-(0[1-9]|[12][0-9]|30))$\");","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" Matcher dateTimeMatcher \u003d datePattern.matcher(this.by);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" if (!dateTimeMatcher.matches()) { // if datetime doesn\u0027t match, do nothing","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" this.dateBy \u003d null;","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" Pattern dateTimePattern2 \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" \"(\\\\d{4})-(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])\"); // YYYY-MM-DD","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" Matcher dateTimePattern2Matcher \u003d dateTimePattern2.matcher(this.by);","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" dateTimePattern2Matcher.matches();","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" int day \u003d Integer.parseInt(dateTimePattern2Matcher.group(3));","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" int month \u003d Integer.parseInt(dateTimePattern2Matcher.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" int year \u003d Integer.parseInt(dateTimePattern2Matcher.group(1));","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" this.dateBy \u003d LocalDate.of(year, month, day);","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" * Converts the task to a user-friendly string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":" * @return A string representation of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":" if (dateBy \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":" String formattedDate \u003d this.dateBy.format(formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formattedDate + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":75}},{"path":"src/main/java/Jarvis/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" * Represents an event task with a start time and an end time.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" * The Event class is a subclass of the Task class and has 2 additional attributes,","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" * from and to, the represent the start time and end time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" protected String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" protected String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" * Constructs a new Event object.","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" * @param from The starting time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" * @param to The ending time of the event.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" public Event(String description, String from, String to, String priority) {","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" this.priority \u003d mapPriority(priority);","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" * Converts the task to a user-friendly string representation.","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":37}},{"path":"src/main/java/Jarvis/IncorrectJarvisCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"public class IncorrectJarvisCommandException extends JarvisException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" public IncorrectJarvisCommandException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":7}},{"path":"src/main/java/Jarvis/InvalidTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"public class InvalidTaskNumberException extends JarvisException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" public InvalidTaskNumberException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":7}},{"path":"src/main/java/Jarvis/Jarvis.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" * Main application class for the Jarvis chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" * This class is responsible initialising the task list, loading and saving tasks in storage and","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" * running the main event loop of the application. It delegates command parsing to the Parser class and storage","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" * operations to the Storage class.","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":"public class Jarvis {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" private static Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" private static Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" * Constructs a new Jarvis chatbot.","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" * @param filePath Path of the file to store the task data in.","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" public Jarvis(String filePath) {","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" assert !filePath.isEmpty() : \"filePath cannot be empty\";","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" return parser.parseCommand(storage, tasks, input);","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" } catch (IncorrectJarvisCommandException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" return Ui.getListOfCommands(parser.validCommands, e);","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" } catch (InvalidTaskNumberException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" return Ui.respond(e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" \" There are currently \" + tasks.countTask() + \" tasks in the list.\");","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" return Ui.respond(\"\");","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"amosting":47}},{"path":"src/main/java/Jarvis/JarvisException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"public class JarvisException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" public JarvisException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":7}},{"path":"src/main/java/Jarvis/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" * Responsible for parsing user input, executing commands and handling any exceptions","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" * This class takes care of interpreting user commands and then calling the appropriate methods to perform","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" * the actions described by those commands. It also handles any exceptions and calls the appropriate methods","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" * to print the details of the exception for the user to read.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":"public class Parser {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" protected ArrayList\u003cString\u003e validCommands; // list of valid commands","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" * Constructs a new Parser object.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" public Parser() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" validCommands \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" addValidCommands();","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" * Adds the list of valid commands into the validCommands ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" private void addValidCommands() {","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" validCommands.add(\"list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" validCommands.add(\"bye\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" validCommands.add(\"mark\");","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" validCommands.add(\"uncheck\");","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" validCommands.add(\"todo\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" validCommands.add(\"deadline\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" validCommands.add(\"event\");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" validCommands.add(\"find\");","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-14"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" * Parses the priority string provided by the user to a string understandable by the program","lastModifiedDate":"2023-09-14"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" * @param priority contains priority of the task, either low, medium or high","lastModifiedDate":"2023-09-14"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" * @return L, M or H representing low, medium or high respectively","lastModifiedDate":"2023-09-14"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-14"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" private String parsePriority(String priority) {","lastModifiedDate":"2023-09-14"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" if (priority.equals(\"low\")) {","lastModifiedDate":"2023-09-14"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" return \"L\";","lastModifiedDate":"2023-09-14"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" } else if (priority.equals(\"medium\")) {","lastModifiedDate":"2023-09-14"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" return \"M\";","lastModifiedDate":"2023-09-14"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-14"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" return \"H\";","lastModifiedDate":"2023-09-14"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" * checks if the user inputted a valid command in the validCommand ArrayList.","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" * @param inputCommand commands that the user inputs.","lastModifiedDate":"2023-09-01"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":" * @return the valid command that the user inputted, an empty string otherwise.","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" // checks if command is valid and throws Jarvis.IncorrectJarvisCommandException","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" private String isValidCommand(String inputCommand) {","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":" assert !inputCommand.isEmpty() : \"inputCommand parameter in isValidCommand() is an empty string\";","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":" // check if command is one of the valid keywords","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":" boolean isValidCommand \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":" String validInputCommand \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":" for (String validCommand: validCommands) {","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":" if (inputCommand.contains(validCommand)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":" isValidCommand \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":" validInputCommand \u003d validCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" break;","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"amosting"},"content":" if (!isValidCommand) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"amosting"},"content":" throw new IncorrectJarvisCommandException(","lastModifiedDate":"2023-09-05"},{"lineNumber":81,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the command \" + inputCommand + \" is not a valid command.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":82,"author":{"gitId":"amosting"},"content":" } catch (IncorrectJarvisCommandException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":84,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"amosting"},"content":" return validInputCommand;","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"amosting"},"content":" * checks if the command the user inputted has a wrong format, if the format of the command is wrong,","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"amosting"},"content":" * print the details to the screen for the user to know how to correct it. This method assumes that","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"amosting"},"content":" * isValidCommand has been run before this and the user has used a valid command. It just checks if","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"amosting"},"content":" * the formatting of the command is correct.","lastModifiedDate":"2023-09-01"},{"lineNumber":94,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"amosting"},"content":" * @param inputCommand the command the user inputted","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"amosting"},"content":" * @param validInputCommand the valid command which the user inputted","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"amosting"},"content":" // identifies which command has wrong formatting and prints feedback to user","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"amosting"},"content":" public String isWrongFormat(String inputCommand, String validInputCommand) {","lastModifiedDate":"2023-09-13"},{"lineNumber":100,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":101,"author":{"gitId":"amosting"},"content":" assert !inputCommand.isEmpty() : \"inputCommand parameter in isWrongFormat() is an empty string\";","lastModifiedDate":"2023-09-13"},{"lineNumber":102,"author":{"gitId":"amosting"},"content":" assert !validInputCommand.isEmpty() : \"validInputCommand parameter in isWrongFormat() is an empty string\";","lastModifiedDate":"2023-09-13"},{"lineNumber":103,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":104,"author":{"gitId":"amosting"},"content":" // since command is valid, check if formatting of the command is correct","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"amosting"},"content":" boolean markMatch \u003d inputCommand.matches(\"mark \\\\d+\");","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"amosting"},"content":" boolean uncheckMatch \u003d inputCommand.matches(\"unmark \\\\d+\");","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"amosting"},"content":" boolean todoMatch \u003d inputCommand.matches(\"todo .+ (low|medium|high)\");","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"amosting"},"content":" boolean deadlineMatch \u003d inputCommand.matches(\"deadline .+ /.+ (low|medium|high)\");","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"amosting"},"content":" boolean eventMatch \u003d inputCommand.matches(\"event .+ /.+ /.+ (low|medium|high)\");","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"amosting"},"content":" if (validInputCommand.equals(\"mark\") \u0026\u0026 !markMatch) { // if mark command but wrong format","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"amosting"},"content":" throw new WrongJarvisCommandFormatException(","lastModifiedDate":"2023-09-05"},{"lineNumber":114,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the format of the mark command you provided is incorrect.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":115,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":116,"author":{"gitId":"amosting"},"content":" return Ui.getWrongFormatMessage(\"mark\", e);","lastModifiedDate":"2023-09-07"},{"lineNumber":117,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"amosting"},"content":" } else if (validInputCommand.equals(\"uncheck\") \u0026\u0026 !uncheckMatch) { // if uncheck command but wrong format","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":120,"author":{"gitId":"amosting"},"content":" throw new WrongJarvisCommandFormatException(","lastModifiedDate":"2023-09-05"},{"lineNumber":121,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the format of the uncheck command you provided is incorrect.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":122,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"amosting"},"content":" return Ui.getWrongFormatMessage(\"uncheck\", e);","lastModifiedDate":"2023-09-07"},{"lineNumber":124,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":125,"author":{"gitId":"amosting"},"content":" } else if (validInputCommand.equals(\"todo\") \u0026\u0026 !todoMatch) { // if todo command but wrong format","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"amosting"},"content":" throw new WrongJarvisCommandFormatException(","lastModifiedDate":"2023-09-05"},{"lineNumber":128,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the format of the todo command you provided is incorrect.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":129,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"amosting"},"content":" return Ui.getWrongFormatMessage(\"todo\", e);","lastModifiedDate":"2023-09-07"},{"lineNumber":131,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":132,"author":{"gitId":"amosting"},"content":" } else if (validInputCommand.equals(\"deadline\") \u0026\u0026 !deadlineMatch) { // if deadline command but wrong format","lastModifiedDate":"2023-08-31"},{"lineNumber":133,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"amosting"},"content":" throw new WrongJarvisCommandFormatException(","lastModifiedDate":"2023-09-05"},{"lineNumber":135,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the format of the deadline command you provided is incorrect.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":136,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"amosting"},"content":" return Ui.getWrongFormatMessage(\"deadline\", e);","lastModifiedDate":"2023-09-07"},{"lineNumber":138,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":139,"author":{"gitId":"amosting"},"content":" } else { // if event command but wrong format","lastModifiedDate":"2023-09-07"},{"lineNumber":140,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"amosting"},"content":" throw new WrongJarvisCommandFormatException(","lastModifiedDate":"2023-09-05"},{"lineNumber":142,"author":{"gitId":"amosting"},"content":" \"Apologies Sir, the format of the event command you provided is incorrect.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":143,"author":{"gitId":"amosting"},"content":" } catch (WrongJarvisCommandFormatException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":144,"author":{"gitId":"amosting"},"content":" return Ui.getWrongFormatMessage(\"event\", e);","lastModifiedDate":"2023-09-07"},{"lineNumber":145,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":146,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":147,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":148,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":150,"author":{"gitId":"amosting"},"content":" * Parses and executes command specified in the given user input.","lastModifiedDate":"2023-09-01"},{"lineNumber":151,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":152,"author":{"gitId":"amosting"},"content":" * @param storage The storage object responsible for task storage operations.","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"amosting"},"content":" * @param tasks The task list that holds all tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"amosting"},"content":" * @param userInput The string input from the user.","lastModifiedDate":"2023-09-01"},{"lineNumber":155,"author":{"gitId":"amosting"},"content":" * @throws IncorrectJarvisCommandException If the command is incorrect.","lastModifiedDate":"2023-09-01"},{"lineNumber":156,"author":{"gitId":"amosting"},"content":" * @throws InvalidTaskNumberException If the task number is out of the range of the number of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":157,"author":{"gitId":"amosting"},"content":" * @throws WrongJarvisCommandFormatException If the command is correct but its formatted incorrectly.","lastModifiedDate":"2023-09-01"},{"lineNumber":158,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"amosting"},"content":" public String parseCommand(Storage storage, TaskList tasks, String userInput) throws","lastModifiedDate":"2023-09-13"},{"lineNumber":160,"author":{"gitId":"amosting"},"content":" IncorrectJarvisCommandException, InvalidTaskNumberException, WrongJarvisCommandFormatException {","lastModifiedDate":"2023-08-31"},{"lineNumber":161,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":162,"author":{"gitId":"amosting"},"content":" Pattern todoPattern \u003d Pattern.compile(\"(todo) (.+) (low|medium|high)\");","lastModifiedDate":"2023-09-14"},{"lineNumber":163,"author":{"gitId":"amosting"},"content":" Pattern deadlinePattern \u003d Pattern.compile(\"(deadline) (.+) /by (.+) (low|medium|high)\");","lastModifiedDate":"2023-09-14"},{"lineNumber":164,"author":{"gitId":"amosting"},"content":" Pattern eventPattern \u003d Pattern.compile(\"(event) (.+) /from (.+) /to (.+) (low|medium|high)\");","lastModifiedDate":"2023-09-14"},{"lineNumber":165,"author":{"gitId":"amosting"},"content":" Pattern deletePattern \u003d Pattern.compile(\"(delete) (\\\\d+)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":166,"author":{"gitId":"amosting"},"content":" Pattern findPattern \u003d Pattern.compile(\"(find) (.+)\");","lastModifiedDate":"2023-09-01"},{"lineNumber":167,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"amosting"},"content":" Matcher todoMatcher \u003d todoPattern.matcher(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"amosting"},"content":" Matcher deadlineMatcher \u003d deadlinePattern.matcher(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"amosting"},"content":" Matcher eventMatcher \u003d eventPattern.matcher(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"amosting"},"content":" Matcher deleteMatcher \u003d deletePattern.matcher(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"amosting"},"content":" Matcher findMatcher \u003d findPattern.matcher(userInput);","lastModifiedDate":"2023-09-01"},{"lineNumber":173,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"amosting"},"content":" String nameOfValidCommand \u003d isValidCommand(userInput);","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"amosting"},"content":" if (userInput.matches(\"list\")) { // if \"list\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"amosting"},"content":" return Ui.getTaskList(tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":178,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"amosting"},"content":" } else if (userInput.matches(\"bye\")) { // if \"bye\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"amosting"},"content":" storage.deleteContents();","lastModifiedDate":"2023-09-07"},{"lineNumber":181,"author":{"gitId":"amosting"},"content":" storage.save(tasks); // save task list to data file after bye is entered","lastModifiedDate":"2023-09-07"},{"lineNumber":182,"author":{"gitId":"amosting"},"content":" return Ui.getByeMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":183,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":184,"author":{"gitId":"amosting"},"content":" } else if (userInput.matches(\"mark \\\\d+\")","lastModifiedDate":"2023-09-05"},{"lineNumber":185,"author":{"gitId":"amosting"},"content":" || userInput.matches(\"uncheck \\\\d+\")) { // if \"mark\" or \"uncheck\" is entered","lastModifiedDate":"2023-09-05"},{"lineNumber":186,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":187,"author":{"gitId":"amosting"},"content":" int taskNum \u003d Integer.parseInt(userInput.substring(userInput.length() - 1));","lastModifiedDate":"2023-08-31"},{"lineNumber":188,"author":{"gitId":"amosting"},"content":" if (!tasks.isValidTaskNumber(taskNum)) {","lastModifiedDate":"2023-09-07"},{"lineNumber":189,"author":{"gitId":"amosting"},"content":" return null;","lastModifiedDate":"2023-09-07"},{"lineNumber":190,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":191,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":192,"author":{"gitId":"amosting"},"content":" Task currentTask \u003d tasks.getTask(taskNum - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":193,"author":{"gitId":"amosting"},"content":" if (userInput.matches(\"uncheck \\\\d+\")) { // if \"uncheck\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"amosting"},"content":" currentTask.setDone(false);","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"amosting"},"content":" return Ui.getUncheckMessage(currentTask);","lastModifiedDate":"2023-09-07"},{"lineNumber":196,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"amosting"},"content":" } else { // if \"mark\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"amosting"},"content":" currentTask.setDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"amosting"},"content":" return Ui.getMarkMessage(currentTask);","lastModifiedDate":"2023-09-07"},{"lineNumber":200,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"amosting"},"content":" } else if (todoMatcher.matches()","lastModifiedDate":"2023-09-05"},{"lineNumber":203,"author":{"gitId":"amosting"},"content":" || deadlineMatcher.matches()","lastModifiedDate":"2023-09-05"},{"lineNumber":204,"author":{"gitId":"amosting"},"content":" || eventMatcher.matches()) { // if task command is entered","lastModifiedDate":"2023-09-05"},{"lineNumber":205,"author":{"gitId":"amosting"},"content":" Task newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"amosting"},"content":" if (todoMatcher.matches()) { // if \"todo\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"amosting"},"content":" String taskDescription \u003d todoMatcher.group(2);","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"amosting"},"content":" String priority \u003d todoMatcher.group(3);","lastModifiedDate":"2023-09-14"},{"lineNumber":209,"author":{"gitId":"amosting"},"content":" newTask \u003d new ToDo(taskDescription, parsePriority(priority));","lastModifiedDate":"2023-09-14"},{"lineNumber":210,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":211,"author":{"gitId":"amosting"},"content":" } else if (deadlineMatcher.matches()) { // if \"deadline\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"amosting"},"content":" String taskDescription \u003d deadlineMatcher.group(2);","lastModifiedDate":"2023-08-31"},{"lineNumber":213,"author":{"gitId":"amosting"},"content":" String by \u003d deadlineMatcher.group(3);","lastModifiedDate":"2023-08-31"},{"lineNumber":214,"author":{"gitId":"amosting"},"content":" String priority \u003d deadlineMatcher.group(4);","lastModifiedDate":"2023-09-14"},{"lineNumber":215,"author":{"gitId":"amosting"},"content":" newTask \u003d new Deadline(taskDescription, by, parsePriority(priority));","lastModifiedDate":"2023-09-14"},{"lineNumber":216,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":217,"author":{"gitId":"amosting"},"content":" } else { // if \"event\" is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":218,"author":{"gitId":"amosting"},"content":" String taskDescription \u003d eventMatcher.group(2);","lastModifiedDate":"2023-08-31"},{"lineNumber":219,"author":{"gitId":"amosting"},"content":" String from \u003d eventMatcher.group(3);","lastModifiedDate":"2023-08-31"},{"lineNumber":220,"author":{"gitId":"amosting"},"content":" String to \u003d eventMatcher.group(4);","lastModifiedDate":"2023-08-31"},{"lineNumber":221,"author":{"gitId":"amosting"},"content":" String priority \u003d eventMatcher.group(5);","lastModifiedDate":"2023-09-14"},{"lineNumber":222,"author":{"gitId":"amosting"},"content":" newTask \u003d new Event(taskDescription, from, to, parsePriority(priority));","lastModifiedDate":"2023-09-14"},{"lineNumber":223,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":224,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":225,"author":{"gitId":"amosting"},"content":" tasks.appendTask(newTask);","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"amosting"},"content":" return Ui.getTaskMessage(newTask, tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":227,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"amosting"},"content":" } else if (deleteMatcher.matches()) { // if delete is entered","lastModifiedDate":"2023-08-31"},{"lineNumber":229,"author":{"gitId":"amosting"},"content":" int taskNum \u003d Integer.parseInt(deleteMatcher.group(2));","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"amosting"},"content":" if (tasks.isValidTaskNumber(taskNum)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"amosting"},"content":" tasks.deleteTask(taskNum - 1);","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"amosting"},"content":" Task deletedTask \u003d tasks.getTask(taskNum);","lastModifiedDate":"2023-09-22"},{"lineNumber":233,"author":{"gitId":"amosting"},"content":" return Ui.getDeleteMessage(deletedTask ,tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":234,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":236,"author":{"gitId":"amosting"},"content":" } else if (findMatcher.matches()) { // if find is entered","lastModifiedDate":"2023-09-01"},{"lineNumber":237,"author":{"gitId":"amosting"},"content":" String keyword \u003d findMatcher.group(2);","lastModifiedDate":"2023-09-01"},{"lineNumber":238,"author":{"gitId":"amosting"},"content":" return Ui.getFoundTaskMessage(tasks.findTask(keyword));","lastModifiedDate":"2023-09-07"},{"lineNumber":239,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":240,"author":{"gitId":"amosting"},"content":" } else { // if none of the above commands go through","lastModifiedDate":"2023-09-07"},{"lineNumber":241,"author":{"gitId":"amosting"},"content":" return isWrongFormat(userInput, nameOfValidCommand);","lastModifiedDate":"2023-09-07"},{"lineNumber":242,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":243,"author":{"gitId":"amosting"},"content":" return null;","lastModifiedDate":"2023-09-07"},{"lineNumber":244,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":245,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"amosting":245}},{"path":"src/main/java/Jarvis/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" private String filePath;","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" // load data from dataFile","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" public String load() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" File file \u003d new File(this.filePath);","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" String fullData \u003d \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" if (file.exists()) {","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" while ((line \u003d reader.readLine()) !\u003d null) { // append each line and a \\n to the fullData variable","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" if (fullData.equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" fullData \u003d line;","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" fullData \u003d fullData + \"\\n\" + line;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" reader.close();","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" boolean fileCreated \u003d file.createNewFile();","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" return fullData;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" // delete contents in dataFile","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" public void deleteContents() {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" try (FileWriter writer \u003d new FileWriter(this.filePath)) {","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" // Write an empty string to the file","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" writer.write(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" System.err.println(\"An error occurred: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" // write tasks in taskList to dateFile","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" for (int i \u003d 0; i \u003c tasks.countTask(); i++) { // writing the string of each task to the data file","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" Task currentTask \u003d tasks.getTask(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" try (FileWriter dataFileWriter \u003d new FileWriter(this.filePath, true)) {","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" dataFileWriter.write(currentTask.toString() + \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":" System.err.println(\"An error occurred: \" + e.getMessage());","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"amosting":63}},{"path":"src/main/java/Jarvis/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" * Abstract class representing a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" * This class serves as the parent for different types of tasks to inherit from and encapsulates","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" * the basic information and operations related to a task.","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" protected priorityLevels priority;","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" protected enum priorityLevels {","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" LOW,","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" MEDIUM,","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" HIGH","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" * Constructs a new Task with the given description","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" * @param description The description of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-14"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" * Maps the priority given to its respective enum value","lastModifiedDate":"2023-09-14"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" * @param priority String representing the priority, either L, M or H","lastModifiedDate":"2023-09-14"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" * @return the corresponding enum value","lastModifiedDate":"2023-09-14"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-14"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" public priorityLevels mapPriority(String priority) {","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" if (priority.equals(\"L\")) {","lastModifiedDate":"2023-09-14"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" return priorityLevels.LOW;","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" } else if (priority.equals(\"M\")) {","lastModifiedDate":"2023-09-14"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" return priorityLevels.MEDIUM;","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" return priorityLevels.HIGH;","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" public void setPriority(String priority) {","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" this.priority \u003d mapPriority(priority);","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" * Sets if the task is done or not","lastModifiedDate":"2023-09-01"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" * @param done true if task is done, false otherwise","lastModifiedDate":"2023-09-01"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" this.isDone \u003d done;","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" * Abstract method for string to date conversion","lastModifiedDate":"2023-09-01"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" public void stringToDate() {}","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":" * Converts the task to a user-friendly string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":" * @return A string representation of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":" public String toString() { // generates the string of marking and task","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":" String marking \u003d \"\";","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":" marking \u003d \"[X]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" marking \u003d \"[ ]\";","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":77,"author":{"gitId":"amosting"},"content":" String priority \u003d \"\";","lastModifiedDate":"2023-09-14"},{"lineNumber":78,"author":{"gitId":"amosting"},"content":" if (this.priority \u003d\u003d priorityLevels.LOW) {","lastModifiedDate":"2023-09-14"},{"lineNumber":79,"author":{"gitId":"amosting"},"content":" priority \u003d \"[L]\";","lastModifiedDate":"2023-09-14"},{"lineNumber":80,"author":{"gitId":"amosting"},"content":" } else if (this.priority \u003d\u003d priorityLevels.MEDIUM) {","lastModifiedDate":"2023-09-14"},{"lineNumber":81,"author":{"gitId":"amosting"},"content":" priority \u003d \"[M]\";","lastModifiedDate":"2023-09-14"},{"lineNumber":82,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-14"},{"lineNumber":83,"author":{"gitId":"amosting"},"content":" priority \u003d \"[H]\";","lastModifiedDate":"2023-09-14"},{"lineNumber":84,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":85,"author":{"gitId":"amosting"},"content":" return marking + priority + \" \" + this.description;","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"amosting":87}},{"path":"src/main/java/Jarvis/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" * Class representing a list of tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" * This class encapsulates the list of tasks and provides methods for adding, removing, and retrieving tasks.","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" * Constructs a new TaskList object from saved data.","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" * @param tasks The string that holds the saved data.","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" public TaskList(String tasks) { // tasks is a string","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-09-14"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" String[] stringTasks \u003d tasks.split(\"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" Pattern todoPattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" \"\\\\[T\\\\]\\\\[(X|\\\\s)\\\\]\\\\[(L|M|H)\\\\] (.+)\"); // [T][-][L/M/H] xxxx","lastModifiedDate":"2023-09-14"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" Pattern deadlinePattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" \"\\\\[D\\\\]\\\\[(X|\\\\s)\\\\]\\\\[(L|M|H)\\\\] (.+) \\\\(by: (.+)\\\\)\"); // [D][-][L/M/H] xxxx (by: xxxxxx)","lastModifiedDate":"2023-09-14"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" Pattern eventPattern \u003d Pattern.compile(","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" \"\\\\[E\\\\]\\\\[(X|\\\\s)\\\\]\\\\[(L|M|H)\\\\] (.+) \\\\(from: (.+) to: (.+)\\\\)\"); // [E][-][L/M/H] xxxx (from: xxxxxx to: xxxxxx)","lastModifiedDate":"2023-09-14"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" // [E][ ][H] project meeting (from: Monday 2pm to: 4pm)","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" for (int i \u003d 0; i \u003c stringTasks.length; i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" Matcher todoMatcher \u003d todoPattern.matcher(stringTasks[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" Matcher deadlineMatcher \u003d deadlinePattern.matcher(stringTasks[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" Matcher eventMatcher \u003d eventPattern.matcher(stringTasks[i]);","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" Task newTask;","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" if (todoMatcher.matches()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" String description \u003d todoMatcher.group(3);","lastModifiedDate":"2023-09-14"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" String priority \u003d todoMatcher.group(2);","lastModifiedDate":"2023-09-14"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" newTask \u003d new ToDo(description, priority);","lastModifiedDate":"2023-09-14"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" if (todoMatcher.group(1).equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" newTask.setDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" } else if (deadlineMatcher.matches()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" String description \u003d deadlineMatcher.group(3);","lastModifiedDate":"2023-09-14"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" String by \u003d deadlineMatcher.group(4);","lastModifiedDate":"2023-09-14"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" String priority \u003d deadlineMatcher.group(2);","lastModifiedDate":"2023-09-14"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" newTask \u003d new Deadline(description, by, priority);","lastModifiedDate":"2023-09-14"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" if (deadlineMatcher.group(1).equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" newTask.setDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" eventMatcher.matches();","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":" String description \u003d eventMatcher.group(3);","lastModifiedDate":"2023-09-14"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" String from \u003d eventMatcher.group(4);","lastModifiedDate":"2023-09-14"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" String to \u003d eventMatcher.group(5);","lastModifiedDate":"2023-09-14"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" String priority \u003d eventMatcher.group(2);","lastModifiedDate":"2023-09-14"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":" newTask \u003d new Event(description, from, to, priority);","lastModifiedDate":"2023-09-14"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":" if (eventMatcher.group(1).equals(\"X\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":" newTask.setDone(true);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":" taskList.add(newTask); // add the task to the task list","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" public void appendTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"amosting"},"content":" public void addTask(Task task, int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"amosting"},"content":" this.taskList.add(index, task);","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"amosting"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"amosting"},"content":" this.taskList.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"amosting"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"amosting"},"content":" return this.taskList.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"amosting"},"content":" public int countTask() {","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"amosting"},"content":" return taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"amosting"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-09-26"},{"lineNumber":95,"author":{"gitId":"amosting"},"content":" return taskList.isEmpty();","lastModifiedDate":"2023-09-26"},{"lineNumber":96,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":97,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":98,"author":{"gitId":"amosting"},"content":" // function checks if task number is valid and throws Jarvis.InvalidTaskNumberException","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"amosting"},"content":" public boolean isValidTaskNumber(int taskNum) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"amosting"},"content":" final String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-09-01"},{"lineNumber":101,"author":{"gitId":"amosting"},"content":" boolean isValid \u003d true;","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"amosting"},"content":" if (taskNum \u003c 0 || taskNum \u003e this.taskList.size()) { // check if task number is of valid range","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"amosting"},"content":" throw new InvalidTaskNumberException(\"Apologies Sir, the task number you provided is out of range.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"amosting"},"content":" } catch (InvalidTaskNumberException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"amosting"},"content":" isValid \u003d false;","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":108,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":109,"author":{"gitId":"amosting"},"content":" return isValid;","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"amosting"},"content":" public ArrayList\u003cTask\u003e findTask(String keyword) {","lastModifiedDate":"2023-09-01"},{"lineNumber":113,"author":{"gitId":"amosting"},"content":" ArrayList\u003cTask\u003e foundTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-01"},{"lineNumber":114,"author":{"gitId":"amosting"},"content":" for (Task task: taskList) {","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"amosting"},"content":" if (task.description.contains(keyword)) {","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"amosting"},"content":" foundTasks.add(task);","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"amosting"},"content":" return foundTasks;","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"amosting":121}},{"path":"src/main/java/Jarvis/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" * Represents a ToDo task that extends the Task class.","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" * The ToDo class is a subclass of the Task class","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" * Constructs a new ToDo object.","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" * @param description description of the deadline task.","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" public ToDo(String description, String priority) {","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" super(description);","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" this.priority \u003d mapPriority(priority);","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" * Converts the task to a user-friendly string representation","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" *","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" * @return A string representation of the task","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-01"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":30}},{"path":"src/main/java/Jarvis/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"public class Ui {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" private static final String name \u003d \"Jarvis\";","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" private static final String greeting \u003d \"Good day Sir! I\u0027m \";","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" private static final String question \u003d \"How can I help you today Sir?\";","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" private static final String signOff \u003d \"Good bye Sir!\";","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" private static final String listInforming \u003d \"Here are the tasks in your list Sir:\";","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" private static final String markInforming \u003d \"Roger that Sir, I\u0027ve marked this task as done:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" private static final String uncheckInforming \u003d \"Noted Sir, I\u0027ve marked this task as NOT done yet:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" private static final String taskInforming \u003d \"As you please Sir, I\u0027ve added the task:\";","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" private static final String deleteInforming \u003d \"Alright Sir, I\u0027ve removed this task:\";","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" private static final String findInforming \u003d \"Here are the matching tasks in your list Sir:\";","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" private static final String listEmptyInforming \u003d \"There are currently no tasks in the list Sir.\";","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" public static String printGreeting() {","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" return greeting + name + \"!\" + \"\\n\" + question;","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" public static String getByeMessage() {","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" return signOff;","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" public static String getMarkMessage(Task currentTask) {","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" return markInforming + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" \" \" + currentTask.toString();","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":" public static String getUncheckMessage(Task currentTask) {","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" return uncheckInforming + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" \" \" + currentTask.toString();","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" public static String getListOfCommands(ArrayList\u003cString\u003e validCommands, Exception e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" String returnString \u003d e.getMessage() + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" for (int i \u003d 0; i \u003c validCommands.size(); i++) { // listing out the current task","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" int numbering \u003d i + 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" returnString \u003d returnString + \" \" + numbering + \". \" + validCommands.get(i) + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" return returnString;","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" public static String getWrongFormatMessage(String command, Exception e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" assert command.matches(\"(?i:mark|uncheck|todo|deadline|event)\"): \"Command is not valid\";","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":" return e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"amosting"},"content":" \" The following is the correct format:\" + \"\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"amosting"},"content":" + \" mark \u003ctask number\u003e\";","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"amosting"},"content":" } else if (command.equals(\"uncheck\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"amosting"},"content":" return e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"amosting"},"content":" \" The following is the correct format:\" + \"\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"amosting"},"content":" + \" uncheck \u003ctask number\u003e\";","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"amosting"},"content":" } else if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"amosting"},"content":" return e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"amosting"},"content":" \" The following is the correct format:\" + \"\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"amosting"},"content":" + \" todo \u003cdescription\u003e \u003cpriority: low/medium/high\u003e\";","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"amosting"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"amosting"},"content":" return e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":63,"author":{"gitId":"amosting"},"content":" \" The following is the correct format:\" + \"\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":64,"author":{"gitId":"amosting"},"content":" + \" deadline \u003cdescription\u003e /by \u003cdate or time\u003e \u003cpriority: low/medium/high\u003e\";","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"amosting"},"content":" return e.getMessage() + \"\\n\" +","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"amosting"},"content":" \" The following is the correct format:\" + \"\\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":68,"author":{"gitId":"amosting"},"content":" + \" event \u003cdescription\u003e /from \u003cdate or time\u003e /to \u003cdate or time\u003e \u003cpriority: low/medium/high\u003e\";","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"amosting"},"content":" public static String getTaskMessage(Task task,TaskList tasks) {","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"amosting"},"content":" return taskInforming + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"amosting"},"content":" \" \" + task.toString() + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"amosting"},"content":" \"You have now \" + tasks.countTask() + \" tasks in the list Sir.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":77,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":78,"author":{"gitId":"amosting"},"content":" public static String getDeleteMessage(Task task, TaskList tasks) {","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"amosting"},"content":" return deleteInforming + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"amosting"},"content":" \" \" + task.toString() + \"\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"amosting"},"content":" \"You have now \" + tasks.countTask() + \" tasks in the list Sir.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":83,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"amosting"},"content":" public static String getTaskList(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":85,"author":{"gitId":"amosting"},"content":" String returnString;","lastModifiedDate":"2023-09-26"},{"lineNumber":86,"author":{"gitId":"amosting"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-09-26"},{"lineNumber":87,"author":{"gitId":"amosting"},"content":" returnString \u003d listEmptyInforming + \"\\n\";","lastModifiedDate":"2023-09-26"},{"lineNumber":88,"author":{"gitId":"amosting"},"content":" } else {","lastModifiedDate":"2023-09-26"},{"lineNumber":89,"author":{"gitId":"amosting"},"content":" returnString \u003d listInforming + \"\\n\";","lastModifiedDate":"2023-09-26"},{"lineNumber":90,"author":{"gitId":"amosting"},"content":" for (int i \u003d 0; i \u003c tasks.countTask(); i++) { // listing out the current task","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"amosting"},"content":" int count \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"amosting"},"content":" Task currentTask \u003d tasks.getTask(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":93,"author":{"gitId":"amosting"},"content":" returnString \u003d returnString + count + \".\" + currentTask.toString() + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":94,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":96,"author":{"gitId":"amosting"},"content":" return returnString;","lastModifiedDate":"2023-09-07"},{"lineNumber":97,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":98,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":99,"author":{"gitId":"amosting"},"content":" public static String getFoundTaskMessage(ArrayList\u003cTask\u003e foundTasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":100,"author":{"gitId":"amosting"},"content":" String returnString \u003d findInforming + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":101,"author":{"gitId":"amosting"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) { // listing out the current task","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"amosting"},"content":" int count \u003d i + 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"amosting"},"content":" Task currentTask \u003d foundTasks.get(i);","lastModifiedDate":"2023-09-01"},{"lineNumber":104,"author":{"gitId":"amosting"},"content":" returnString \u003d returnString + count + \".\" + currentTask.toString() + \"\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":105,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"amosting"},"content":" return returnString;","lastModifiedDate":"2023-09-07"},{"lineNumber":107,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":108,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":109,"author":{"gitId":"amosting"},"content":" public static String respond(String message) {","lastModifiedDate":"2023-09-07"},{"lineNumber":110,"author":{"gitId":"amosting"},"content":" return message;","lastModifiedDate":"2023-09-07"},{"lineNumber":111,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":112,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"amosting":112}},{"path":"src/main/java/Jarvis/WrongJarvisCommandFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"public class WrongJarvisCommandFormatException extends JarvisException {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" public WrongJarvisCommandFormatException(String errorMsg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":7}},{"path":"src/main/java/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"public class Launcher {","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":10}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import Jarvis.Jarvis;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" private Jarvis jarvis \u003d new Jarvis(\"jarvis.txt\");","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setJarvis(jarvis);","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" stage.show();","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":27}},{"path":"src/main/java/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"import Jarvis.Jarvis;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"amosting"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"amosting"},"content":" private Jarvis jarvis;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"amosting"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/tony_stark.jpg\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"amosting"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/jarvis.jpeg\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"amosting"},"content":" public void initialize() {","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"amosting"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"amosting"},"content":" public void setJarvis(Jarvis jarvis) {","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"amosting"},"content":" this.jarvis \u003d jarvis;","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"amosting"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"amosting"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"amosting"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"amosting"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"amosting"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"amosting"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"amosting"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"amosting"},"content":" String response \u003d this.jarvis.getResponse(input);","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"amosting"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"amosting"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"amosting"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"amosting"},"content":" );","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"amosting"},"content":" userInput.clear();","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":50}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"MainWindow\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"amosting"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"amosting"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"amosting"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"amosting"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"amosting"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"amosting"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"amosting"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"amosting":19}},{"path":"src/test/java/Jarvis/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" public void deadline_correctInitialisation_toStringCorrect() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" Deadline deadline \u003d new Deadline(\"make helmet\", \"2023-09-02\", \"low\");","lastModifiedDate":"2023-09-14"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" assertEquals(\"[D][ ][L] make helmet (by: Sep 2 2023)\", deadline.toString());","lastModifiedDate":"2023-09-14"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"amosting":12}},{"path":"src/test/java/Jarvis/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"package Jarvis;","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"public class ToDoTest {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":" @Test","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":" public void todo_correctInitialisation_toStringCorrect() {","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":" ToDo todo \u003d new ToDo(\"Mark XXVI is ready for you sir\", \"low\");","lastModifiedDate":"2023-09-14"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":" assertEquals(\"[T][ ][L] Mark XXVI is ready for you sir\", todo.toString());","lastModifiedDate":"2023-09-14"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"amosting"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"amosting":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"amosting"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"amosting"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"amosting"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"amosting"},"content":"deadline finish assignment /by Saturday","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"amosting"},"content":"todo start on vlog","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"amosting"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"amosting"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"amosting"},"content":"mark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"amosting"},"content":"unmark 3","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"amosting"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"amosting"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"amosting":11}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"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":"amosting"},"content":"java -classpath ../bin Jarvis \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"amosting":1,"-":37}}] diff --git a/amosting_ip_master/commits.json b/amosting_ip_master/commits.json index f4a50ad8..97669596 100644 --- a/amosting_ip_master/commits.json +++ b/amosting_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"amosting":[{"date":"2023-08-21","commitResults":[{"hash":"26b9e67a5ebbcb7927764e583abfd94597574cab","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit. Deleted Duke.java, replaced with Jarvis.java and edited Jarvis.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":10}}},{"hash":"07ec1b4cef0792074a40c0a5eed6c84d57dcdb6e","isMergeCommit":false,"messageTitle":"Level 1. Echo Added logic to echo user commands. If user enters anything other than bye, echo. If user enters bye, reply with goodbye message.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":3}}}]},{"date":"2023-08-22","commitResults":[{"hash":"92d1e609f7e9841e6d8fd20c87f54ddd68b6fab3","isMergeCommit":false,"messageTitle":"Level 2. Add, List. Added logic to store tasks and print out a list of tasks when the request \"list\" is given.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"16ff2bc32a7499e1f508d310c934e780dce0a0d7","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. Added Task.java. Added logic for \"mark\" and \"unmark\"","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":7}}}]},{"date":"2023-08-23","commitResults":[{"hash":"9352ee1dc0eb6a74c32b96a4b3713bef82f4d329","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines Added Todo.java, Event.java and Dealine.java which inherit from Task.java Added logic in Jarvis.java to handle \"todo\", \"event\" and \"deadline\" commands","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":53}}},{"hash":"2cf0402d20f723cd7d3d6b5f8f0b0d3f7808c2ec","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing Added command line inputs into input.txt and expected outputs into expected.txt. Added simple logic to handle erroneous inputs, this is not completed. Removed ASCII art because it was causing too many issues with the input output comparison.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":20,"deletions":15},"sh":{"insertions":1,"deletions":1}}},{"hash":"c59aaf2becc5e11d48638314ce5fcb069b4f5bca","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors. Added JarvisException.java which is the parent of IncorrectJarvisCommandException.java, InvalidTaskNumberException.java and WrongJarvisCommandFormatException.java Added logic to handle errors in Jarvis.java","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":149,"deletions":19}}}]},{"date":"2023-08-24","commitResults":[{"hash":"51a3755e4f9b32a8214cd7abdab28d0077421ce3","isMergeCommit":false,"messageTitle":"Level 6. Delete. Added logic to handle delete command. Added error handling for delete command. Organised error handling to become more modular and added regex matching.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":116,"deletions":63}}}]},{"date":"2023-08-28","commitResults":[{"hash":"4aea4a8f3eb100aec0be67c8e19fd8534808b43a","isMergeCommit":false,"messageTitle":"Add Level 7. Save. Added save logic to allow for task list to be saved to local drive. Used gitignore on data.txt so that git will not track changes to data.txt as it is the file that stores the task list data. Further modularised and cleaned up code in main.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":48}}},{"hash":"8cfc1a6998e54913dce554928388c4da99f6dc4a","isMergeCommit":false,"messageTitle":"Revert \"Add Level 7. Save.\"","messageBody":"This reverts commit 4aea4a8f3eb100aec0be67c8e19fd8534808b43a.\n","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":82}}}]},{"date":"2023-08-29","commitResults":[{"hash":"9eadc16c03d39032157e6bd0cca32eac43468b7b","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Add Level 7. Save.\"\"","messageBody":"This reverts commit 8cfc1a6998e54913dce554928388c4da99f6dc4a.\n","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":48}}}]},{"date":"2023-08-31","commitResults":[{"hash":"dc10fae7b09c765a7c495e0d769887a1cb427ae3","isMergeCommit":false,"messageTitle":"Add Level 8. Dates and Times. Added logic in Deadline class to handle date recognition. Added empty function in Task class for inheritance in Deadline class.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"d8cb2c5358e608e30bd233cdb1083ee9ac1381e2","isMergeCommit":false,"messageTitle":"Add TaskList.java TaskList.java added to extract out tasklist related code from main to keep code modular. appendTask, addTask, deleteTask, getTask, countTask, isValidTaskNumber, printTask, printDelete, printTaskList all added into TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":56}}},{"hash":"27a61526367480abe7eab7d8f0453aead83ee0df","isMergeCommit":false,"messageTitle":"Add Storage.java Storage.java added to extract out loading and saving file related code from main to keep code modular. load, deleteContents, save methods added Logic for instantiating TaskList object from a saved file also added","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":34}}},{"hash":"d3119d0702481e4f224fac2a50c5b91237b92e0c","isMergeCommit":false,"messageTitle":"Add Parser and Ui class and changed Jarvis.java Parser.java added to process user commands and execute the proper actions needed, this logic was shifted from Jarvis.java for OOP Ui.java added to handle UI interfacing with users, printing the proper information needed for a pleasant user experience, this logic was shifted form Jarvis.java for OOP Jarvis.java edited to handle the increase in OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":277,"deletions":228}}},{"hash":"48cf1ab3807faca793ffe3ca94ce6a8ddece579f","isMergeCommit":false,"messageTitle":"A-Packages. Organize into Packages. Organised all .java files into the Jarvis Package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"04a81646b53edd0d4b54c560602dd68f273447d6","isMergeCommit":false,"messageTitle":"Revert \"A-Packages. Organize into Packages.\"","messageBody":"This reverts commit 48cf1ab3807faca793ffe3ca94ce6a8ddece579f.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":26}}},{"hash":"6958f1b930f2cd404f7eb5ef7a90ec81432c880e","isMergeCommit":false,"messageTitle":"A-Packages. Organise into packages. Organised classes into Jarvis package for better organisation","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}},{"hash":"ef14643815e176a2d7e1a13775cdc3374fa7cfe2","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027 into A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5cf8a7fd1c0f66708b3df9842c7c86741cb6410c","isMergeCommit":false,"messageTitle":"Add A-Gradle. Use Gradle. Changed the file name in the Gradle build file so that gradle can run the program.","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"f27d99a40299654e32cd8d5772192e82321ec1c4","isMergeCommit":false,"messageTitle":"A-JUnit. Add JUnit Tests. Added ToDoTest and DeadlineTest classes and used JUnit to test the toString() methods ToDo and Deadline classes respectively.","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":1}}},{"hash":"b02aef4da90c822f9db9d3c0e58a37ffd33d952f","isMergeCommit":false,"messageTitle":"A-Jar. Create a JAR File. Added archiveFileName in order for .jar file to be named correctly","messageBody":"","tags":["A-Jar","A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"29329cdab78957f1cd221c3d784264a9a987bb7f","isMergeCommit":false,"messageTitle":"Add Level-9. Find. Added findTask to TaskList class to identify matching tasks and return them in a Task ArrayList. Added printFoundTask to Ui.java to show the user the found files.","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":33}}},{"hash":"c429a82aa1b710417c2b25014d2f62fac5bef6e5","isMergeCommit":false,"messageTitle":"Add. A-JavaDoc. JavaDoc. Added JavaDoc descriptions to the Deadline, Event, Jarvis, Parser, Task, TaskList and ToDo classes.","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":160,"deletions":0}}},{"hash":"2f4acb9df1277a6304b245ac36499f292c29f2d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-05","commitResults":[{"hash":"2c7c4caf2f27443309a845a40709e11dcd7f6bf8","isMergeCommit":false,"messageTitle":"Add A-CheckStyle. Use CheckStyle. Added CheckStyle to detect coding style violations, added logic in build.gradle to support checkstyle. Edited existing code after adding CheckStyle make sure coding style is not violated.","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":31,"deletions":23}}}]},{"date":"2023-09-07","commitResults":[{"hash":"3e4610cdc2b56bcb30dfe67cb36991147b9b3867","isMergeCommit":false,"messageTitle":"Add Level-10. GUI. Added DialogBox, Launcher, Main and MainWindow classes to support javaFx. Edited Jarvis, Parser, TaskList and Ui classes to support javaFx.","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":228,"deletions":146}}}]},{"date":"2023-09-13","commitResults":[{"hash":"fb007b257b83add44a96cf9a42959856be4a007a","isMergeCommit":false,"messageTitle":"Add A-Assertions. Use Assertions. Added assertions to Jarvis, Parser, Storage, TaskList, Ui classes.","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":22,"deletions":5}}},{"hash":"95f9ed0f4619fda91eda5d7ea0b65c8efbdd9dd5","isMergeCommit":false,"messageTitle":"Removal of dead code and static keywords for Jarvis, Parser and Ui classes.","messageBody":"Dead code and unused variables are redundant and confuses other developers.\nWrong use of static keyword confuses others developers as class level methods and attributes are not actually meant to be as such.\n\nDelete dead code and remove unnecessary static keywords.\n\nSo as to declutter code and fix wrong class level methods.\n","tags":["A-FullCommitMessage","A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":8}}},{"hash":"d77a6716bad04397663951329b3bcba6eb5ea1f8","isMergeCommit":false,"messageTitle":"Add priority attribute, methods and priority level enum to Task class and its children.","messageBody":"To support adding priority levels to tasks.\n","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}}]},{"date":"2023-09-14","commitResults":[{"hash":"dab31859f938708aca4a5b59623286d053885997","isMergeCommit":false,"messageTitle":"Edit pattern recognition logic and existing functions to support additional priority value in Tasks.","messageBody":"The current pattern recognition logic does not support the additional priority string.\nAnd the current constructors used to construct Task objects does not support Task classes.\n\nNew pattern recognition logic recognises when the user adds low/medium/high after typing the previous format of tasks.\n","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":20}}}]},{"date":"2023-09-22","commitResults":[{"hash":"6ecc802fba4126e134f93a19dacb49d144496064","isMergeCommit":false,"messageTitle":"Add logic to handle new priority feature, for checking of correct user input. Edited regex expression in TaskList to handle priority field. Edited return statements in Ui.java to return correct task format for new priority feature.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":8}}},{"hash":"6f2d2299a2b040f2e7652bf09b477a4e671c83d6","isMergeCommit":false,"messageTitle":"Add User Guide. Edited README.md to have a proper user guide for Jarvis chatbot. Edited some small Ui class return strings to ensure proper and consistent formatting.","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":9},"md":{"insertions":188,"deletions":13}}}]}]},"authorFileTypeContributionMap":{"amosting":{"java":1008,"md":177,"fxml":35,"sh":1,"bat":0,"gradle":24,"txt":11}},"authorContributionVariance":{"amosting":32858.16},"authorDisplayNameMap":{"amosting":"CS2103T-W10-1 TING..AMOS"}} +{"authorDailyContributionsMap":{"amosting":[{"date":"2023-08-21","commitResults":[{"hash":"26b9e67a5ebbcb7927764e583abfd94597574cab","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit. Deleted Duke.java, replaced with Jarvis.java and edited Jarvis.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":10}}},{"hash":"07ec1b4cef0792074a40c0a5eed6c84d57dcdb6e","isMergeCommit":false,"messageTitle":"Level 1. Echo Added logic to echo user commands. If user enters anything other than bye, echo. If user enters bye, reply with goodbye message.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":3}}}]},{"date":"2023-08-22","commitResults":[{"hash":"92d1e609f7e9841e6d8fd20c87f54ddd68b6fab3","isMergeCommit":false,"messageTitle":"Level 2. Add, List. Added logic to store tasks and print out a list of tasks when the request \"list\" is given.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"16ff2bc32a7499e1f508d310c934e780dce0a0d7","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done. Added Task.java. Added logic for \"mark\" and \"unmark\"","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":7}}}]},{"date":"2023-08-23","commitResults":[{"hash":"9352ee1dc0eb6a74c32b96a4b3713bef82f4d329","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines Added Todo.java, Event.java and Dealine.java which inherit from Task.java Added logic in Jarvis.java to handle \"todo\", \"event\" and \"deadline\" commands","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":53}}},{"hash":"2cf0402d20f723cd7d3d6b5f8f0b0d3f7808c2ec","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing Added command line inputs into input.txt and expected outputs into expected.txt. Added simple logic to handle erroneous inputs, this is not completed. Removed ASCII art because it was causing too many issues with the input output comparison.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":20,"deletions":15},"sh":{"insertions":1,"deletions":1}}},{"hash":"c59aaf2becc5e11d48638314ce5fcb069b4f5bca","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors. Added JarvisException.java which is the parent of IncorrectJarvisCommandException.java, InvalidTaskNumberException.java and WrongJarvisCommandFormatException.java Added logic to handle errors in Jarvis.java","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":149,"deletions":19}}}]},{"date":"2023-08-24","commitResults":[{"hash":"51a3755e4f9b32a8214cd7abdab28d0077421ce3","isMergeCommit":false,"messageTitle":"Level 6. Delete. Added logic to handle delete command. Added error handling for delete command. Organised error handling to become more modular and added regex matching.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":116,"deletions":63}}}]},{"date":"2023-08-28","commitResults":[{"hash":"4aea4a8f3eb100aec0be67c8e19fd8534808b43a","isMergeCommit":false,"messageTitle":"Add Level 7. Save. Added save logic to allow for task list to be saved to local drive. Used gitignore on data.txt so that git will not track changes to data.txt as it is the file that stores the task list data. Further modularised and cleaned up code in main.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":48}}},{"hash":"8cfc1a6998e54913dce554928388c4da99f6dc4a","isMergeCommit":false,"messageTitle":"Revert \"Add Level 7. Save.\"","messageBody":"This reverts commit 4aea4a8f3eb100aec0be67c8e19fd8534808b43a.\n","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":82}}}]},{"date":"2023-08-29","commitResults":[{"hash":"9eadc16c03d39032157e6bd0cca32eac43468b7b","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Add Level 7. Save.\"\"","messageBody":"This reverts commit 8cfc1a6998e54913dce554928388c4da99f6dc4a.\n","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":48}}}]},{"date":"2023-08-31","commitResults":[{"hash":"dc10fae7b09c765a7c495e0d769887a1cb427ae3","isMergeCommit":false,"messageTitle":"Add Level 8. Dates and Times. Added logic in Deadline class to handle date recognition. Added empty function in Task class for inheritance in Deadline class.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"d8cb2c5358e608e30bd233cdb1083ee9ac1381e2","isMergeCommit":false,"messageTitle":"Add TaskList.java TaskList.java added to extract out tasklist related code from main to keep code modular. appendTask, addTask, deleteTask, getTask, countTask, isValidTaskNumber, printTask, printDelete, printTaskList all added into TaskList.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":56}}},{"hash":"27a61526367480abe7eab7d8f0453aead83ee0df","isMergeCommit":false,"messageTitle":"Add Storage.java Storage.java added to extract out loading and saving file related code from main to keep code modular. load, deleteContents, save methods added Logic for instantiating TaskList object from a saved file also added","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":34}}},{"hash":"d3119d0702481e4f224fac2a50c5b91237b92e0c","isMergeCommit":false,"messageTitle":"Add Parser and Ui class and changed Jarvis.java Parser.java added to process user commands and execute the proper actions needed, this logic was shifted from Jarvis.java for OOP Ui.java added to handle UI interfacing with users, printing the proper information needed for a pleasant user experience, this logic was shifted form Jarvis.java for OOP Jarvis.java edited to handle the increase in OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":277,"deletions":228}}},{"hash":"48cf1ab3807faca793ffe3ca94ce6a8ddece579f","isMergeCommit":false,"messageTitle":"A-Packages. Organize into Packages. Organised all .java files into the Jarvis Package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"04a81646b53edd0d4b54c560602dd68f273447d6","isMergeCommit":false,"messageTitle":"Revert \"A-Packages. Organize into Packages.\"","messageBody":"This reverts commit 48cf1ab3807faca793ffe3ca94ce6a8ddece579f.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":26}}},{"hash":"6958f1b930f2cd404f7eb5ef7a90ec81432c880e","isMergeCommit":false,"messageTitle":"A-Packages. Organise into packages. Organised classes into Jarvis package for better organisation","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}},{"hash":"ef14643815e176a2d7e1a13775cdc3374fa7cfe2","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027 into A-Gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5cf8a7fd1c0f66708b3df9842c7c86741cb6410c","isMergeCommit":false,"messageTitle":"Add A-Gradle. Use Gradle. Changed the file name in the Gradle build file so that gradle can run the program.","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-01","commitResults":[{"hash":"f27d99a40299654e32cd8d5772192e82321ec1c4","isMergeCommit":false,"messageTitle":"A-JUnit. Add JUnit Tests. Added ToDoTest and DeadlineTest classes and used JUnit to test the toString() methods ToDo and Deadline classes respectively.","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":1}}},{"hash":"b02aef4da90c822f9db9d3c0e58a37ffd33d952f","isMergeCommit":false,"messageTitle":"A-Jar. Create a JAR File. Added archiveFileName in order for .jar file to be named correctly","messageBody":"","tags":["A-Jar","A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"29329cdab78957f1cd221c3d784264a9a987bb7f","isMergeCommit":false,"messageTitle":"Add Level-9. Find. Added findTask to TaskList class to identify matching tasks and return them in a Task ArrayList. Added printFoundTask to Ui.java to show the user the found files.","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":33}}},{"hash":"c429a82aa1b710417c2b25014d2f62fac5bef6e5","isMergeCommit":false,"messageTitle":"Add. A-JavaDoc. JavaDoc. Added JavaDoc descriptions to the Deadline, Event, Jarvis, Parser, Task, TaskList and ToDo classes.","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":160,"deletions":0}}},{"hash":"2f4acb9df1277a6304b245ac36499f292c29f2d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-05","commitResults":[{"hash":"2c7c4caf2f27443309a845a40709e11dcd7f6bf8","isMergeCommit":false,"messageTitle":"Add A-CheckStyle. Use CheckStyle. Added CheckStyle to detect coding style violations, added logic in build.gradle to support checkstyle. Edited existing code after adding CheckStyle make sure coding style is not violated.","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":31,"deletions":23}}}]},{"date":"2023-09-07","commitResults":[{"hash":"3e4610cdc2b56bcb30dfe67cb36991147b9b3867","isMergeCommit":false,"messageTitle":"Add Level-10. GUI. Added DialogBox, Launcher, Main and MainWindow classes to support javaFx. Edited Jarvis, Parser, TaskList and Ui classes to support javaFx.","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":228,"deletions":146}}}]},{"date":"2023-09-13","commitResults":[{"hash":"fb007b257b83add44a96cf9a42959856be4a007a","isMergeCommit":false,"messageTitle":"Add A-Assertions. Use Assertions. Added assertions to Jarvis, Parser, Storage, TaskList, Ui classes.","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":22,"deletions":5}}},{"hash":"95f9ed0f4619fda91eda5d7ea0b65c8efbdd9dd5","isMergeCommit":false,"messageTitle":"Removal of dead code and static keywords for Jarvis, Parser and Ui classes.","messageBody":"Dead code and unused variables are redundant and confuses other developers.\nWrong use of static keyword confuses others developers as class level methods and attributes are not actually meant to be as such.\n\nDelete dead code and remove unnecessary static keywords.\n\nSo as to declutter code and fix wrong class level methods.\n","tags":["A-FullCommitMessage","A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":8}}},{"hash":"d77a6716bad04397663951329b3bcba6eb5ea1f8","isMergeCommit":false,"messageTitle":"Add priority attribute, methods and priority level enum to Task class and its children.","messageBody":"To support adding priority levels to tasks.\n","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}}]},{"date":"2023-09-14","commitResults":[{"hash":"dab31859f938708aca4a5b59623286d053885997","isMergeCommit":false,"messageTitle":"Edit pattern recognition logic and existing functions to support additional priority value in Tasks.","messageBody":"The current pattern recognition logic does not support the additional priority string.\nAnd the current constructors used to construct Task objects does not support Task classes.\n\nNew pattern recognition logic recognises when the user adds low/medium/high after typing the previous format of tasks.\n","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":20}}}]},{"date":"2023-09-22","commitResults":[{"hash":"6ecc802fba4126e134f93a19dacb49d144496064","isMergeCommit":false,"messageTitle":"Add logic to handle new priority feature, for checking of correct user input. Edited regex expression in TaskList to handle priority field. Edited return statements in Ui.java to return correct task format for new priority feature.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":8}}},{"hash":"6f2d2299a2b040f2e7652bf09b477a4e671c83d6","isMergeCommit":false,"messageTitle":"Add User Guide. Edited README.md to have a proper user guide for Jarvis chatbot. Edited some small Ui class return strings to ensure proper and consistent formatting.","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":9},"md":{"insertions":188,"deletions":13}}}]},{"date":"2023-09-26","commitResults":[{"hash":"159f3815bff80d8978685d0d91d55a5670f6c8b8","isMergeCommit":false,"messageTitle":"Bug fixes","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":82,"deletions":75}}},{"hash":"71c19f3d39ef8d12d158e441f76d2c5ba614c3f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/amosting/ip","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"amosting":{"java":1015,"md":177,"fxml":35,"sh":1,"bat":0,"gradle":24,"txt":11}},"authorContributionVariance":{"amosting":30263.656},"authorDisplayNameMap":{"amosting":"CS2103T-W10-1 TING..AMOS"}} diff --git a/andytoh1_ip_master/authorship.json b/andytoh1_ip_master/authorship.json index 4cae2ff1..c18a9e2d 100644 --- a/andytoh1_ip_master/authorship.json +++ b/andytoh1_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" archiveFileName \u003d \"Chatbot.jar\"","lastModifiedDate":"2023-09-26"},{"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":{"andytoh1":1,"-":41}},{"path":"src/main/java/Chatbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"import java.io.File;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"public class Chatbot {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" Storage.load(taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" Ui.startMessage();","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" while (true) {","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" String userMessage \u003d userInput.nextLine();","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" Parser.parse(userMessage, taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" Storage.saveTasks(taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"andytoh1":25}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" * Class for Deadline task.","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" super(description);","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" return super.getDescription() + \" (by: \" + deadline.format(formatter) + \")\";","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" public String getDeadline() {","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" return deadline.format(formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" public String getDescriptionWithoutTime() {","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" return super.getDescription();","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":29}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" * Class for Event task.","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"public class Event extends Task {","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" public Event(String description, LocalDateTime startTime, LocalDateTime endTime) {","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" super(description);","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" return super.getDescription() + \" (from: \" + startTime.format(formatter) + \" to: \"","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" + endTime.format(formatter) + \")\";","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" public String getStartTime() {","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" return startTime.format(formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" public String getEndTime() {","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" return endTime.format(formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" public String getDescriptionWithoutTime() {","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" return super.getDescription();","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":38}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" * Class for reading user input.","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"public class Parser {","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" * Parses any user input.","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" * @param userMessage Input of the user.","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" * @param taskList TaskList with all the current tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" public static void parse (String userMessage, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"dd-MM-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" if (userMessage.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" Ui.endMessage();","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" if (userMessage.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" Ui.listTasks(taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" return;","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" if (userMessage.substring(0, 6).equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" int removeTask \u003d Integer.parseInt(userMessage.substring(7)) - 1;","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" Ui.deleteMessage(removeTask, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 4).equalsIgnoreCase(\"find\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" Ui.findMessage(userMessage.substring(5), taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" }else if (userMessage.substring(0, 4).equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" int doneTask \u003d Integer.parseInt(userMessage.substring(5)) - 1;","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" Ui.markMessage(doneTask, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 4).equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" Todo todo \u003d new Todo(userMessage.substring(5));","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" Ui.todoMessage(todo, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" Ui.formatErrorMessage(\"todo\");","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 8).equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":" int index \u003d userMessage.indexOf(\"/by\");","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" String description \u003d userMessage.substring(9, index - 1);","lastModifiedDate":"2023-09-26"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" LocalDateTime taskDeadline \u003d LocalDateTime.parse(userMessage.substring(index + 4), formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":" Deadline deadline \u003d new Deadline(description, taskDeadline);","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":" Ui.deadlineMessage(deadline, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":" Ui.formatErrorMessage(\"deadline\");","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 5).equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":" int index \u003d userMessage.indexOf(\"/from\");","lastModifiedDate":"2023-09-26"},{"lineNumber":53,"author":{"gitId":"andytoh1"},"content":" int index2 \u003d userMessage.indexOf(\"/to\");","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"andytoh1"},"content":" String description \u003d userMessage.substring(6, index - 1);","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"andytoh1"},"content":" String start \u003d userMessage.substring(index + 6, index2 - 1);","lastModifiedDate":"2023-09-26"},{"lineNumber":56,"author":{"gitId":"andytoh1"},"content":" String end \u003d userMessage.substring(index2 + 4);","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"andytoh1"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"andytoh1"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"andytoh1"},"content":" Event event \u003d new Event(description, startTime, endTime);","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"andytoh1"},"content":" Ui.eventMessage(event, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":61,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":62,"author":{"gitId":"andytoh1"},"content":" Ui.formatErrorMessage(\"event\");","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":64,"author":{"gitId":"andytoh1"},"content":" } else {","lastModifiedDate":"2023-09-26"},{"lineNumber":65,"author":{"gitId":"andytoh1"},"content":" Ui.inputErrorMessage();","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"andytoh1"},"content":" Ui.inputErrorMessage();","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":70,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":71,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":71}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.io.File;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" * Class for saving and loading the list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":"public class Storage {","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" * Loads the list of tasks from file.","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" * @param taskList The TaskList object to be filled with data from file.","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" public static void load(TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" String datePattern2 \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(datePattern2);","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" File taskFile \u003d new File(\"./tasks.txt\");","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" Scanner taskReader \u003d new Scanner(taskFile);","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" while (taskReader.hasNextLine()) {","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" String taskFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" Todo todo \u003d new Todo(taskFromFile.substring(3));","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(1) \u003d\u003d \u0027t\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" String deadlineFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" LocalDateTime taskDeadline \u003d LocalDateTime.parse(deadlineFromFile, formatter2);","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" Deadline deadline \u003d new Deadline(taskFromFile.substring(3), taskDeadline);","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(1) \u003d\u003d \u0027t\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" String startFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-26"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startFromFile, formatter2);","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":" String endFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endFromFile, formatter2);","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" Event event \u003d new Event(taskFromFile.substring(3), start, end);","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(1) \u003d\u003d \u0027t\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":" event.markAsDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(event);","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":53,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"andytoh1"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"andytoh1"},"content":" File taskFile \u003d new File(\"./tasks.txt\");","lastModifiedDate":"2023-09-26"},{"lineNumber":56,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"andytoh1"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"andytoh1"},"content":" } catch (IOException e2) {","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Error!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":61,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":62,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":64,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":65,"author":{"gitId":"andytoh1"},"content":" * Saves the current tasks to file.","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"andytoh1"},"content":" * @param taskList The TaskList object with the tasks to be saved to file.","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"andytoh1"},"content":" public static void saveTasks(TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":70,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":71,"author":{"gitId":"andytoh1"},"content":" FileWriter taskWriter \u003d new FileWriter(\"./tasks.txt\", false);","lastModifiedDate":"2023-09-26"},{"lineNumber":72,"author":{"gitId":"andytoh1"},"content":" for (int taskNumber \u003d 0; taskNumber \u003c\u003d taskList.getCount(); taskNumber++) {","lastModifiedDate":"2023-09-26"},{"lineNumber":73,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(taskNumber) instanceof Todo) {","lastModifiedDate":"2023-09-26"},{"lineNumber":74,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(\"T\");","lastModifiedDate":"2023-09-26"},{"lineNumber":75,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).isDone() ? \"t \" : \"f \");","lastModifiedDate":"2023-09-26"},{"lineNumber":76,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).getDescription() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":77,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(taskNumber) instanceof Deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(\"D\");","lastModifiedDate":"2023-09-26"},{"lineNumber":79,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).isDone() ? \"t \" : \"f \");","lastModifiedDate":"2023-09-26"},{"lineNumber":80,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Deadline)taskList.getTask(taskNumber)).getDescriptionWithoutTime() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":81,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(taskNumber) instanceof Event) {","lastModifiedDate":"2023-09-26"},{"lineNumber":82,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(\"E\");","lastModifiedDate":"2023-09-26"},{"lineNumber":83,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).isDone() ? \"t \" : \"f \");","lastModifiedDate":"2023-09-26"},{"lineNumber":84,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Event)taskList.getTask(taskNumber)).getDescriptionWithoutTime() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":85,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":86,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(taskNumber) instanceof Deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":87,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Deadline) taskList.getTask(taskNumber)).getDeadline() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":88,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":89,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(taskNumber) instanceof Event) {","lastModifiedDate":"2023-09-26"},{"lineNumber":90,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Event) taskList.getTask(taskNumber)).getStartTime() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":91,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Event) taskList.getTask(taskNumber)).getEndTime() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":92,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":93,"author":{"gitId":"andytoh1"},"content":" taskWriter.flush();","lastModifiedDate":"2023-09-26"},{"lineNumber":94,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":95,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":96,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Error!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":97,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":98,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":99,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":99}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"public class Task {","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":" private String description;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":" private boolean done;","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" public Task(String description) {","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" this.done \u003d false;","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" public void markAsDone() {","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" this.done \u003d true;","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" this.done \u003d false;","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" return description;","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" public boolean isDone() {","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" return done;","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":25}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":" * Class representing a list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"public class TaskList {","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" private Task[] tasks;","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" private int taskCount;","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" public TaskList() {","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" tasks \u003d new Task[100];","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" taskCount \u003d 0;","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" * Adds a task to the list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" * @param task The Task object to be added to the list.","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" tasks[taskCount] \u003d task;","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" taskCount++;","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" * Deletes a task from the list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" * @param task The index of the task to be deleted from the list.","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" public void deleteTask(int task) {","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" Task[] newTasks \u003d new Task[100];","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" for (int i \u003d 0; i \u003c taskCount - 1; i++) {","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" int j \u003d i;","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" if (i \u003e\u003d task) j \u003d i + 1;","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" newTasks[i] \u003d tasks[j];","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" tasks \u003d newTasks;","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" taskCount--;","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":" public void markTask(int task) {","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" tasks[task].markAsDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" public int getCount() {","lastModifiedDate":"2023-09-26"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" return taskCount;","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" public Task getTask(int i) {","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":" return tasks[i];","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":50}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":" * Class for Todo task.","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" public Todo(String description) {","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" super(description);","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":8}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":" * Class handling the output.","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"public class Ui {","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" public static void startMessage() {","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Hello! I\u0027m Chatbot!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" public static void endMessage() {","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" System.exit(0);","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" public static void inputErrorMessage() {","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"I\u0027m sorry, but I don\u0027t know what that means!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" * Displays an error message arising from mistakes in format.","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" * @param type Type of command that is not properly formatted.","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" public static void formatErrorMessage(String type) {","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" switch(type) {","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" case \"todo\":","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"todo \u003ctask description\u003e\\\"!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" case \"mark\":","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"mark \u003ctask number\u003e\\\"!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" case \"delete\":","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"delete \u003ctask number\u003e\\\"!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"deadline \u003ctask description\u003e /by DD-MM-YYYY HH:MM\\\"!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" case \"event\":","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"event \u003ctask description\u003e /from DD-MM-YYYY HH:MM \" + \"/to DD-MM-YYYY HH:MM\\\"!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":" * Displays the list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" * @param taskList The list of tasks to be displayed.","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":" public static void listTasks(TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Here is the list of relevant tasks:\");","lastModifiedDate":"2023-09-26"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":" for (int i \u003d 0; i \u003c taskList.getCount(); i++) {","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":" int listNumber \u003d i + 1;","lastModifiedDate":"2023-09-26"},{"lineNumber":53,"author":{"gitId":"andytoh1"},"content":" System.out.print(listNumber + \". \");","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(i) instanceof Todo) {","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[T]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":56,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(i) instanceof Deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[D]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(i) instanceof Event) {","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[E]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":61,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(i).isDone()) System.out.print(\"[X] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":62,"author":{"gitId":"andytoh1"},"content":" else System.out.print(\"[ ] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(i).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":64,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":65,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"andytoh1"},"content":" * Handles the output of a delete command.","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":70,"author":{"gitId":"andytoh1"},"content":" * @param removeTask Index of the task to be removed from the list.","lastModifiedDate":"2023-09-26"},{"lineNumber":71,"author":{"gitId":"andytoh1"},"content":" * @param taskList The TaskList object from which the task is to be deleted.","lastModifiedDate":"2023-09-26"},{"lineNumber":72,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":73,"author":{"gitId":"andytoh1"},"content":" public static void deleteMessage(int removeTask, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":74,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":75,"author":{"gitId":"andytoh1"},"content":" if (removeTask \u003c 0 || removeTask \u003e\u003d taskList.getCount()) {","lastModifiedDate":"2023-09-26"},{"lineNumber":76,"author":{"gitId":"andytoh1"},"content":" throw new RuntimeException();","lastModifiedDate":"2023-09-26"},{"lineNumber":77,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"This task will be removed!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":79,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(removeTask) instanceof Todo) {","lastModifiedDate":"2023-09-26"},{"lineNumber":80,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[T]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":81,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(removeTask) instanceof Deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":82,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[D]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":83,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(removeTask) instanceof Event) {","lastModifiedDate":"2023-09-26"},{"lineNumber":84,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[E]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":85,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":86,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(removeTask).isDone()) System.out.print(\"[X] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":87,"author":{"gitId":"andytoh1"},"content":" else System.out.print(\"[ ] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":88,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(removeTask).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":89,"author":{"gitId":"andytoh1"},"content":" taskList.deleteTask(removeTask);","lastModifiedDate":"2023-09-26"},{"lineNumber":90,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":91,"author":{"gitId":"andytoh1"},"content":" Ui.formatErrorMessage(\"delete\");","lastModifiedDate":"2023-09-26"},{"lineNumber":92,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":93,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":94,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":95,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":96,"author":{"gitId":"andytoh1"},"content":" * Handles the output of a mark command.","lastModifiedDate":"2023-09-26"},{"lineNumber":97,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":98,"author":{"gitId":"andytoh1"},"content":" * @param doneTask Index of the task to be marked as done.","lastModifiedDate":"2023-09-26"},{"lineNumber":99,"author":{"gitId":"andytoh1"},"content":" * @param taskList The TaskList object in which the task is to be marked as done.","lastModifiedDate":"2023-09-26"},{"lineNumber":100,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":101,"author":{"gitId":"andytoh1"},"content":" public static void markMessage(int doneTask, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":102,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":103,"author":{"gitId":"andytoh1"},"content":" if (doneTask \u003c 0 || doneTask \u003e\u003d taskList.getCount()) {","lastModifiedDate":"2023-09-26"},{"lineNumber":104,"author":{"gitId":"andytoh1"},"content":" throw new RuntimeException();","lastModifiedDate":"2023-09-26"},{"lineNumber":105,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":106,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Well done! This task has been marked as done.\");","lastModifiedDate":"2023-09-26"},{"lineNumber":107,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(doneTask) instanceof Todo) {","lastModifiedDate":"2023-09-26"},{"lineNumber":108,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[T]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":109,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(doneTask) instanceof Deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":110,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[D]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":111,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(doneTask) instanceof Event) {","lastModifiedDate":"2023-09-26"},{"lineNumber":112,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[E]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":113,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":114,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[X] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":115,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(doneTask).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":116,"author":{"gitId":"andytoh1"},"content":" taskList.getTask(doneTask).markAsDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":117,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":118,"author":{"gitId":"andytoh1"},"content":" Ui.formatErrorMessage(\"mark\");","lastModifiedDate":"2023-09-26"},{"lineNumber":119,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":120,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":121,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":122,"author":{"gitId":"andytoh1"},"content":" public static void todoMessage(Todo todo, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":123,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-09-26"},{"lineNumber":124,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"Added this task: [T] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":125,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(taskList.getCount() - 1).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":126,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":127,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":128,"author":{"gitId":"andytoh1"},"content":" public static void deadlineMessage(Deadline deadline, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":129,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2023-09-26"},{"lineNumber":130,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"Added this task: [D] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":131,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(taskList.getCount() - 1).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":132,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":133,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":134,"author":{"gitId":"andytoh1"},"content":" public static void eventMessage(Event event, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":135,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(event);","lastModifiedDate":"2023-09-26"},{"lineNumber":136,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"Added this task: [E] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":137,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(taskList.getCount() - 1).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":138,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":139,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":140,"author":{"gitId":"andytoh1"},"content":" public static void findMessage(String searchTerm, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":141,"author":{"gitId":"andytoh1"},"content":" TaskList resultList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":142,"author":{"gitId":"andytoh1"},"content":" for (int i \u003d 0; i \u003c taskList.getCount(); i++) {","lastModifiedDate":"2023-09-26"},{"lineNumber":143,"author":{"gitId":"andytoh1"},"content":" String taskDescription \u003d taskList.getTask(i).getDescription();","lastModifiedDate":"2023-09-26"},{"lineNumber":144,"author":{"gitId":"andytoh1"},"content":" for (int j \u003d 0; j \u003c\u003d taskDescription.length() - searchTerm.length(); j++) {","lastModifiedDate":"2023-09-26"},{"lineNumber":145,"author":{"gitId":"andytoh1"},"content":" if (taskDescription.substring(j, j+ searchTerm.length()).equals(searchTerm)) {","lastModifiedDate":"2023-09-26"},{"lineNumber":146,"author":{"gitId":"andytoh1"},"content":" resultList.addTask(taskList.getTask(i));","lastModifiedDate":"2023-09-26"},{"lineNumber":147,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":148,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":149,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":150,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":151,"author":{"gitId":"andytoh1"},"content":" listTasks(resultList);","lastModifiedDate":"2023-09-26"},{"lineNumber":152,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":153,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":153}},{"path":"src/test/java/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" public void testSaveTasks() {","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" TaskList originalList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" Storage.load(originalList);","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" Task task1 \u003d new Task(\"Task 1\");","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" Task task2 \u003d new Task(\"Task 2\");","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" testList.addTask(task1);","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" testList.addTask(task2);","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" Storage.saveTasks(testList);","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" TaskList verifyList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" Storage.load(verifyList);","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" assertEquals(verifyList.getTask(0), task1);","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" assertEquals(verifyList.getTask(1), task2);","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":22}},{"path":"src/test/java/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" @Test","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" public void testDeleteTask() {","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" Task task1 \u003d new Task(\"Task 1\");","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" Task task2 \u003d new Task(\"Task 2\");","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(task1);","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(task2);","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" taskList.deleteTask(0);","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" assertEquals(1, taskList.getCount());","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" assertEquals(task2, taskList.getTask(0));","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"adkpqweqwdpaskda","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"todo abc","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"deadline abc by sunday","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"deadline abc /by sunday","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"andytoh1":4}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"java -classpath ..\\bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"andytoh1":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":"java -classpath ../bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"andytoh1":1,"-":37}}] +[{"path":"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":"andytoh1"},"content":" implementation \u0027org.testng:testng:7.1.0\u0027","lastModifiedDate":"2023-09-26"},{"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":"andytoh1"},"content":" testImplementation \u0027org.mockito:mockito-core:3.12.4\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" String javaFxVersion \u003d \u002717.0.8\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" implementation \u0027org.openjfx:javafx-controls:17.0.8\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":" mainClassName \u003d \"Launcher\"","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"andytoh1"},"content":" archiveFileName \u003d \"Chatbot.jar\"","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"andytoh1":20,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# User Guide","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"Chatbot is a chatbot that helps to keep track of your tasks. ","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"### Adding a to-do: `todo `","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"Adds a task without any time constraints to the list.","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":"Format: `todo TASK_DESCRIPTION`","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":"Example of usage:","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":"`todo read book`","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"### Adding a deadline task: `deadline`","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":"Adds a task with a specific time by which it has to be done.","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":"Format: `deadline TASK_DESCRIPTION /by DD-MM-YYYY HH:MM`","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":"- Time is given in 24-hour format.","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":"Example of usage:","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":"`deadline read book by 19-09-2023 18:00`","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":"### Adding an event: `event`","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":"Adds a task with specific start and end times.","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":"Format: `event TASK_DESCRIPTION /from DD-MM-YYYY HH:MM /to DD-MM-YYYY HH:MM`","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":"- Time is given in 24-hour format.","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":"Example of usage:","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":"`event read book /from 20-12-2023 12:00 /to 20-12-2023 15:00`","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":"### Viewing list of tasks: `list`","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":"Displays the list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":"Format: `list`","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":"### Deleting tasks from list: `delete`","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":"Deletes the task at the specified index in the list.","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":"Format: `delete INDEX`","lastModifiedDate":"2023-09-26"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":"- `INDEX` has to be greater than 0.","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":"- `INDEX` has to be smaller than the last number in the list.","lastModifiedDate":"2023-09-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":56,"author":{"gitId":"andytoh1"},"content":"`delete 3`","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"andytoh1"},"content":"### Mark tasks: `mark`","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"andytoh1"},"content":"Marks a task at the given index in the list as done.","lastModifiedDate":"2023-09-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":62,"author":{"gitId":"andytoh1"},"content":"Format: `mark INDEX`","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"andytoh1"},"content":"- `INDEX` has to be greater than 0.","lastModifiedDate":"2023-09-26"},{"lineNumber":64,"author":{"gitId":"andytoh1"},"content":"- `INDEX` has to be smaller than the last number in the list .","lastModifiedDate":"2023-09-26"},{"lineNumber":65,"author":{"gitId":"andytoh1"},"content":"- Tasks are marked as done with an \"X\".","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"andytoh1"},"content":"Example of usage:","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"andytoh1"},"content":"`mark 1`","lastModifiedDate":"2023-09-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":71,"author":{"gitId":"andytoh1"},"content":"### Locating a task: `find`","lastModifiedDate":"2023-09-26"},{"lineNumber":72,"author":{"gitId":"andytoh1"},"content":"Searches for a task by description.","lastModifiedDate":"2023-09-26"},{"lineNumber":73,"author":{"gitId":"andytoh1"},"content":"- Search is case-sensitive.","lastModifiedDate":"2023-09-26"},{"lineNumber":74,"author":{"gitId":"andytoh1"},"content":"- The order of search terms matter.","lastModifiedDate":"2023-09-26"},{"lineNumber":75,"author":{"gitId":"andytoh1"},"content":"- A match will happen if the search term matches any substring exactly.","lastModifiedDate":"2023-09-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":77,"author":{"gitId":"andytoh1"},"content":"### Exit program: `bye`","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":79,"author":{"gitId":"andytoh1"},"content":"Closes the chatbot.","lastModifiedDate":"2023-09-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":81,"author":{"gitId":"andytoh1"},"content":"Format: `bye`","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":59,"-":22}},{"path":"src/main/java/Chatbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":"import java.io.File;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":"import javafx.event.EventTarget;","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":"public class Chatbot extends Application {","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" private Scene scene;","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" private Image duke \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" public Chatbot() {","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":" Storage.load(taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" Ui.startMessage();","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":" while (true) {","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":" String userMessage \u003d userInput.nextLine();","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":" Parser.parse(userMessage, taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"andytoh1"},"content":" Storage.saveTasks(taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"andytoh1"},"content":" @Override","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"andytoh1"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"andytoh1"},"content":" // Step 1. Setting up required components","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"andytoh1"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":61,"author":{"gitId":"andytoh1"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-26"},{"lineNumber":62,"author":{"gitId":"andytoh1"},"content":" Storage.load(taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":64,"author":{"gitId":"andytoh1"},"content":" initializeUI(stage);","lastModifiedDate":"2023-09-26"},{"lineNumber":65,"author":{"gitId":"andytoh1"},"content":" setStage(stage);","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"andytoh1"},"content":" setEventHandlers(taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"andytoh1"},"content":" private void initializeUI(Stage stage) {","lastModifiedDate":"2023-09-26"},{"lineNumber":70,"author":{"gitId":"andytoh1"},"content":" scrollPane \u003d new ScrollPane();","lastModifiedDate":"2023-09-26"},{"lineNumber":71,"author":{"gitId":"andytoh1"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2023-09-26"},{"lineNumber":72,"author":{"gitId":"andytoh1"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2023-09-26"},{"lineNumber":73,"author":{"gitId":"andytoh1"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2023-09-26"},{"lineNumber":74,"author":{"gitId":"andytoh1"},"content":" sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2023-09-26"},{"lineNumber":75,"author":{"gitId":"andytoh1"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2023-09-26"},{"lineNumber":76,"author":{"gitId":"andytoh1"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2023-09-26"},{"lineNumber":77,"author":{"gitId":"andytoh1"},"content":" mainLayout.setPrefSize(400.0, 600.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"andytoh1"},"content":" scene \u003d new Scene(mainLayout);","lastModifiedDate":"2023-09-26"},{"lineNumber":79,"author":{"gitId":"andytoh1"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-26"},{"lineNumber":80,"author":{"gitId":"andytoh1"},"content":" stage.show();","lastModifiedDate":"2023-09-26"},{"lineNumber":81,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":82,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":83,"author":{"gitId":"andytoh1"},"content":" private void setStage(Stage stage) {","lastModifiedDate":"2023-09-26"},{"lineNumber":84,"author":{"gitId":"andytoh1"},"content":" stage.setTitle(\"Chatbot\");","lastModifiedDate":"2023-09-26"},{"lineNumber":85,"author":{"gitId":"andytoh1"},"content":" stage.setResizable(false);","lastModifiedDate":"2023-09-26"},{"lineNumber":86,"author":{"gitId":"andytoh1"},"content":" stage.setMinHeight(600.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":87,"author":{"gitId":"andytoh1"},"content":" stage.setMinWidth(400.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":88,"author":{"gitId":"andytoh1"},"content":" scrollPane.setPrefSize(400, 570);","lastModifiedDate":"2023-09-26"},{"lineNumber":89,"author":{"gitId":"andytoh1"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2023-09-26"},{"lineNumber":90,"author":{"gitId":"andytoh1"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2023-09-26"},{"lineNumber":91,"author":{"gitId":"andytoh1"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":92,"author":{"gitId":"andytoh1"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2023-09-26"},{"lineNumber":93,"author":{"gitId":"andytoh1"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2023-09-26"},{"lineNumber":94,"author":{"gitId":"andytoh1"},"content":" userInput.setPrefWidth(325.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":95,"author":{"gitId":"andytoh1"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":96,"author":{"gitId":"andytoh1"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":97,"author":{"gitId":"andytoh1"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":98,"author":{"gitId":"andytoh1"},"content":" AnchorPane.setRightAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":99,"author":{"gitId":"andytoh1"},"content":" AnchorPane.setLeftAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":100,"author":{"gitId":"andytoh1"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":101,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":102,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":103,"author":{"gitId":"andytoh1"},"content":" private void setEventHandlers(TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":104,"author":{"gitId":"andytoh1"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2023-09-26"},{"lineNumber":105,"author":{"gitId":"andytoh1"},"content":" dialogContainer.getChildren().add(getDialogLabel(userInput.getText()));","lastModifiedDate":"2023-09-26"},{"lineNumber":106,"author":{"gitId":"andytoh1"},"content":" userInput.clear();","lastModifiedDate":"2023-09-26"},{"lineNumber":107,"author":{"gitId":"andytoh1"},"content":" });","lastModifiedDate":"2023-09-26"},{"lineNumber":108,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":109,"author":{"gitId":"andytoh1"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2023-09-26"},{"lineNumber":110,"author":{"gitId":"andytoh1"},"content":" dialogContainer.getChildren().add(getDialogLabel(userInput.getText()));","lastModifiedDate":"2023-09-26"},{"lineNumber":111,"author":{"gitId":"andytoh1"},"content":" userInput.clear();","lastModifiedDate":"2023-09-26"},{"lineNumber":112,"author":{"gitId":"andytoh1"},"content":" });","lastModifiedDate":"2023-09-26"},{"lineNumber":113,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":114,"author":{"gitId":"andytoh1"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2023-09-26"},{"lineNumber":115,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":116,"author":{"gitId":"andytoh1"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2023-09-26"},{"lineNumber":117,"author":{"gitId":"andytoh1"},"content":" handleUserInput(taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":118,"author":{"gitId":"andytoh1"},"content":" });","lastModifiedDate":"2023-09-26"},{"lineNumber":119,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":120,"author":{"gitId":"andytoh1"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2023-09-26"},{"lineNumber":121,"author":{"gitId":"andytoh1"},"content":" handleUserInput(taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":122,"author":{"gitId":"andytoh1"},"content":" });","lastModifiedDate":"2023-09-26"},{"lineNumber":123,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":124,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":125,"author":{"gitId":"andytoh1"},"content":" // more code to be added here later","lastModifiedDate":"2023-09-26"},{"lineNumber":126,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":127,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":128,"author":{"gitId":"andytoh1"},"content":" private Label getDialogLabel(String text) {","lastModifiedDate":"2023-09-26"},{"lineNumber":129,"author":{"gitId":"andytoh1"},"content":" // You will need to import `javafx.scene.control.Label`.","lastModifiedDate":"2023-09-26"},{"lineNumber":130,"author":{"gitId":"andytoh1"},"content":" Label textToAdd \u003d new Label(text);","lastModifiedDate":"2023-09-26"},{"lineNumber":131,"author":{"gitId":"andytoh1"},"content":" textToAdd.setWrapText(true);","lastModifiedDate":"2023-09-26"},{"lineNumber":132,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":133,"author":{"gitId":"andytoh1"},"content":" return textToAdd;","lastModifiedDate":"2023-09-26"},{"lineNumber":134,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":135,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":136,"author":{"gitId":"andytoh1"},"content":" private void handleUserInput(TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":137,"author":{"gitId":"andytoh1"},"content":" Label userText \u003d new Label(userInput.getText());","lastModifiedDate":"2023-09-26"},{"lineNumber":138,"author":{"gitId":"andytoh1"},"content":" Label dukeText \u003d new Label(getResponse(userInput.getText(), taskList));","lastModifiedDate":"2023-09-26"},{"lineNumber":139,"author":{"gitId":"andytoh1"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-26"},{"lineNumber":140,"author":{"gitId":"andytoh1"},"content":" DialogBox.getUserDialog(userText, new ImageView(user)),","lastModifiedDate":"2023-09-26"},{"lineNumber":141,"author":{"gitId":"andytoh1"},"content":" DialogBox.getDukeDialog(dukeText, new ImageView(duke))","lastModifiedDate":"2023-09-26"},{"lineNumber":142,"author":{"gitId":"andytoh1"},"content":" );","lastModifiedDate":"2023-09-26"},{"lineNumber":143,"author":{"gitId":"andytoh1"},"content":" userInput.clear();","lastModifiedDate":"2023-09-26"},{"lineNumber":144,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":145,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":146,"author":{"gitId":"andytoh1"},"content":" private String getResponse(String input, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":147,"author":{"gitId":"andytoh1"},"content":" return Parser.parse(input, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":148,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":149,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"andytoh1":149}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" * Class for Deadline task.","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" super(description);","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" return super.getDescription() + \" (by: \" + deadline.format(formatter) + \")\";","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" public String getDeadline() {","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" return deadline.format(formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" public String getDescriptionWithoutTime() {","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" return super.getDescription();","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":29}},{"path":"src/main/java/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" private Label text;","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" public DialogBox(Label l, ImageView iv) {","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" text \u003d l;","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" displayPicture \u003d iv;","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" text.setWrapText(true);","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" displayPicture.setFitWidth(100.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" displayPicture.setFitHeight(100.0);","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" this.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" this.getChildren().addAll(text, displayPicture);","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" private void flip() {","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" this.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" FXCollections.reverse(tmp);","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" this.getChildren().setAll(tmp);","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" public static DialogBox getUserDialog(Label l, ImageView iv) {","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" return new DialogBox(l, iv);","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" public static DialogBox getDukeDialog(Label l, ImageView iv) {","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" var db \u003d new DialogBox(l, iv);","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":" db.flip();","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" return db;","lastModifiedDate":"2023-09-26"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":45}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" * Class for Event task.","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"public class Event extends Task {","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" public Event(String description, LocalDateTime startTime, LocalDateTime endTime) {","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" super(description);","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" return super.getDescription() + \" (from: \" + startTime.format(formatter) + \" to: \"","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" + endTime.format(formatter) + \")\";","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" public String getStartTime() {","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" return startTime.format(formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" public String getEndTime() {","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" return endTime.format(formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" public String getDescriptionWithoutTime() {","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" return super.getDescription();","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":38}},{"path":"src/main/java/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":"public class Launcher {","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" Application.launch(Chatbot.class, args);","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":10}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" * Class for reading user input.","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"public class Parser {","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" * Parses any user input.","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" * @param userMessage Input of the user.","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" * @param taskList TaskList with all the current tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" public static String parse (String userMessage, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" assert userMessage.length() \u003e 0;","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"dd-MM-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" if (userMessage.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" return Ui.endMessage();","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" if (userMessage.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" return Ui.listTasks(taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" if (userMessage.substring(0, 6).equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" int removeTask \u003d Integer.parseInt(userMessage.substring(7)) - 1;","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" return Ui.deleteMessage(removeTask, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 4).equalsIgnoreCase(\"find\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" return Ui.findMessage(userMessage.substring(5), taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" }else if (userMessage.substring(0, 4).equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" int doneTask \u003d Integer.parseInt(userMessage.substring(5)) - 1;","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" return Ui.markMessage(doneTask, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 4).equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" return parseTodo(userMessage, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 8).equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" return parseDeadline(userMessage, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 5).equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" return parseEvent(userMessage, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":" } else {","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" return Ui.inputErrorMessage();","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" return Ui.inputErrorMessage();","lastModifiedDate":"2023-09-26"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" public static String parseEvent(String userMessage, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"dd-MM-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":" int index \u003d userMessage.indexOf(\"/from\");","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":" int index2 \u003d userMessage.indexOf(\"/to\");","lastModifiedDate":"2023-09-26"},{"lineNumber":53,"author":{"gitId":"andytoh1"},"content":" String description \u003d userMessage.substring(6, index - 1);","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"andytoh1"},"content":" String start \u003d userMessage.substring(index + 6, index2 - 1);","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"andytoh1"},"content":" String end \u003d userMessage.substring(index2 + 4);","lastModifiedDate":"2023-09-26"},{"lineNumber":56,"author":{"gitId":"andytoh1"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"andytoh1"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"andytoh1"},"content":" Event event \u003d new Event(description, startTime, endTime);","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"andytoh1"},"content":" return Ui.eventMessage(event, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":61,"author":{"gitId":"andytoh1"},"content":" return Ui.formatErrorMessage(\"event\");","lastModifiedDate":"2023-09-26"},{"lineNumber":62,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":64,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":65,"author":{"gitId":"andytoh1"},"content":" public static String parseDeadline(String userMessage, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"dd-MM-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"andytoh1"},"content":" int index \u003d userMessage.indexOf(\"/by\");","lastModifiedDate":"2023-09-26"},{"lineNumber":70,"author":{"gitId":"andytoh1"},"content":" String description \u003d userMessage.substring(9, index - 1);","lastModifiedDate":"2023-09-26"},{"lineNumber":71,"author":{"gitId":"andytoh1"},"content":" LocalDateTime taskDeadline \u003d LocalDateTime.parse(userMessage.substring(index + 4), formatter);","lastModifiedDate":"2023-09-26"},{"lineNumber":72,"author":{"gitId":"andytoh1"},"content":" Deadline deadline \u003d new Deadline(description, taskDeadline);","lastModifiedDate":"2023-09-26"},{"lineNumber":73,"author":{"gitId":"andytoh1"},"content":" return Ui.deadlineMessage(deadline, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":74,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":75,"author":{"gitId":"andytoh1"},"content":" return Ui.formatErrorMessage(\"deadline\");","lastModifiedDate":"2023-09-26"},{"lineNumber":76,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":77,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":79,"author":{"gitId":"andytoh1"},"content":" public static String parseTodo(String userMessage, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":80,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":81,"author":{"gitId":"andytoh1"},"content":" Todo todo \u003d new Todo(userMessage.substring(5));","lastModifiedDate":"2023-09-26"},{"lineNumber":82,"author":{"gitId":"andytoh1"},"content":" return Ui.todoMessage(todo, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":83,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":84,"author":{"gitId":"andytoh1"},"content":" return Ui.formatErrorMessage(\"todo\");","lastModifiedDate":"2023-09-26"},{"lineNumber":85,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":86,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":87,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":87}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.io.File;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" * Class for saving and loading the list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":"public class Storage {","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" * Loads the list of tasks from file.","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" * @param taskList The TaskList object to be filled with data from file.","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" public static void load(TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" assert taskList.getCount() \u003d\u003d 0;","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" String datePattern2 \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(datePattern2);","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" File taskFile \u003d new File(\"./tasks.txt\");","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" Scanner taskReader \u003d new Scanner(taskFile);","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" while (taskReader.hasNextLine()) {","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" String taskFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" addTodo(taskFromFile, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" String deadlineFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" addDeadline(taskFromFile, deadlineFromFile, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" String startFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" String endFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" addEvent(taskFromFile, startFromFile, endFromFile, taskList);","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" File taskFile \u003d new File(\"./tasks.txt\");","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-09-26"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" } catch (IOException e2) {","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Error!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":" public static void addTodo(String taskFromFile, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":" Todo todo \u003d new Todo(taskFromFile.substring(3));","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(1) \u003d\u003d \u0027t\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":53,"author":{"gitId":"andytoh1"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-09-26"},{"lineNumber":56,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"andytoh1"},"content":" public static void addDeadline(String taskFromFile, String deadlineFromFile, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"andytoh1"},"content":" String datePattern2 \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(datePattern2);","lastModifiedDate":"2023-09-26"},{"lineNumber":61,"author":{"gitId":"andytoh1"},"content":" LocalDateTime taskDeadline \u003d LocalDateTime.parse(deadlineFromFile, formatter2);","lastModifiedDate":"2023-09-26"},{"lineNumber":62,"author":{"gitId":"andytoh1"},"content":" Deadline deadline \u003d new Deadline(taskFromFile.substring(3), taskDeadline);","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(1) \u003d\u003d \u0027t\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":64,"author":{"gitId":"andytoh1"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":65,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":70,"author":{"gitId":"andytoh1"},"content":" public static void addEvent(String taskFromFile, String startFromFile, String endFromFile, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":71,"author":{"gitId":"andytoh1"},"content":" String datePattern2 \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-26"},{"lineNumber":72,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(datePattern2);","lastModifiedDate":"2023-09-26"},{"lineNumber":73,"author":{"gitId":"andytoh1"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startFromFile, formatter2);","lastModifiedDate":"2023-09-26"},{"lineNumber":74,"author":{"gitId":"andytoh1"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endFromFile, formatter2);","lastModifiedDate":"2023-09-26"},{"lineNumber":75,"author":{"gitId":"andytoh1"},"content":" Event event \u003d new Event(taskFromFile.substring(3), start, end);","lastModifiedDate":"2023-09-26"},{"lineNumber":76,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(1) \u003d\u003d \u0027t\u0027) {","lastModifiedDate":"2023-09-26"},{"lineNumber":77,"author":{"gitId":"andytoh1"},"content":" event.markAsDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":79,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(event);","lastModifiedDate":"2023-09-26"},{"lineNumber":80,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":81,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":82,"author":{"gitId":"andytoh1"},"content":" * Saves the current tasks to file.","lastModifiedDate":"2023-09-26"},{"lineNumber":83,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":84,"author":{"gitId":"andytoh1"},"content":" * @param taskList The TaskList object with the tasks to be saved to file.","lastModifiedDate":"2023-09-26"},{"lineNumber":85,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":86,"author":{"gitId":"andytoh1"},"content":" public static void saveTasks(TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":87,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":88,"author":{"gitId":"andytoh1"},"content":" FileWriter taskWriter \u003d new FileWriter(\"./tasks.txt\", false);","lastModifiedDate":"2023-09-26"},{"lineNumber":89,"author":{"gitId":"andytoh1"},"content":" for (int taskNumber \u003d 0; taskNumber \u003c\u003d taskList.getCount(); taskNumber++) {","lastModifiedDate":"2023-09-26"},{"lineNumber":90,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(taskNumber) instanceof Todo) {","lastModifiedDate":"2023-09-26"},{"lineNumber":91,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(\"T\");","lastModifiedDate":"2023-09-26"},{"lineNumber":92,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).isDone() ? \"t \" : \"f \");","lastModifiedDate":"2023-09-26"},{"lineNumber":93,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).getDescription() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":94,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(taskNumber) instanceof Deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":95,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(\"D\");","lastModifiedDate":"2023-09-26"},{"lineNumber":96,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).isDone() ? \"t \" : \"f \");","lastModifiedDate":"2023-09-26"},{"lineNumber":97,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Deadline)taskList.getTask(taskNumber)).getDescriptionWithoutTime() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":98,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(taskNumber) instanceof Event) {","lastModifiedDate":"2023-09-26"},{"lineNumber":99,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(\"E\");","lastModifiedDate":"2023-09-26"},{"lineNumber":100,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).isDone() ? \"t \" : \"f \");","lastModifiedDate":"2023-09-26"},{"lineNumber":101,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Event)taskList.getTask(taskNumber)).getDescriptionWithoutTime() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":102,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":103,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(taskNumber) instanceof Deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":104,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Deadline) taskList.getTask(taskNumber)).getDeadline() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":105,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":106,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(taskNumber) instanceof Event) {","lastModifiedDate":"2023-09-26"},{"lineNumber":107,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Event) taskList.getTask(taskNumber)).getStartTime() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":108,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Event) taskList.getTask(taskNumber)).getEndTime() + \"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":109,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":110,"author":{"gitId":"andytoh1"},"content":" taskWriter.flush();","lastModifiedDate":"2023-09-26"},{"lineNumber":111,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":112,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":113,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Error!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":114,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":115,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":116,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":116}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"public class Task {","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":" private String description;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":" private boolean done;","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" public Task(String description) {","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" this.done \u003d false;","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" public void markAsDone() {","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" this.done \u003d true;","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" this.done \u003d false;","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" return description;","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" public boolean isDone() {","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" return done;","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":25}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":" * Class representing a list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"public class TaskList {","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" private Task[] tasks;","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" private int taskCount;","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" public TaskList() {","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" tasks \u003d new Task[100];","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" taskCount \u003d 0;","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" * Adds a task to the list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" * @param task The Task object to be added to the list.","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" tasks[taskCount] \u003d task;","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" taskCount++;","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" * Deletes a task from the list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" * @param task The index of the task to be deleted from the list.","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" public void deleteTask(int task) {","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" Task[] newTasks \u003d new Task[100];","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" for (int i \u003d 0; i \u003c taskCount - 1; i++) {","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" int j \u003d i;","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" if (i \u003e\u003d task) j \u003d i + 1;","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" newTasks[i] \u003d tasks[j];","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" tasks \u003d newTasks;","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" taskCount--;","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" assert taskCount \u003e\u003d 0;","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" public void markTask(int task) {","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" tasks[task].markAsDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":" assert tasks[task].isDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":" public int getCount() {","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":" return taskCount;","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":" public Task getTask(int i) {","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":" return tasks[i];","lastModifiedDate":"2023-09-26"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":52}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":" * Class for Todo task.","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" public Todo(String description) {","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" super(description);","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":8}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"/**","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":" * Class handling the output.","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"public class Ui {","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" public static String startMessage() {","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Hello! I\u0027m Chatbot!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"What can I do for you?\");","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" public static String endMessage() {","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" public static String inputErrorMessage() {","lastModifiedDate":"2023-09-26"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" return \"I\u0027m sorry, but I don\u0027t know what that means!\";","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" * Displays an error message arising from mistakes in format.","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" * @param type Type of command that is not properly formatted.","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" public static String formatErrorMessage(String type) {","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" switch(type) {","lastModifiedDate":"2023-09-26"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" case \"todo\":","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Please use the format \\\"todo \u003ctask description\u003e\\\"!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" case \"mark\":","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Please use the format \\\"mark \u003ctask number\u003e\\\"!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" case \"delete\":","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Please use the format \\\"delete \u003ctask number\u003e\\\"!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Please use the format \\\"deadline \u003ctask description\u003e /by DD-MM-YYYY HH:MM\\\"!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" case \"event\":","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Please use the format \\\"event \u003ctask description\u003e /from DD-MM-YYYY HH:MM \" + \"/to DD-MM-YYYY HH:MM\\\"!\");","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-26"},{"lineNumber":53,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":56,"author":{"gitId":"andytoh1"},"content":" * Displays the list of tasks.","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"andytoh1"},"content":" * @param taskList The list of tasks to be displayed.","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"andytoh1"},"content":" public static String listTasks(TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":61,"author":{"gitId":"andytoh1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-26"},{"lineNumber":62,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Here is the list of relevant tasks:\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":64,"author":{"gitId":"andytoh1"},"content":" for (int i \u003d 0; i \u003c taskList.getCount(); i++) {","lastModifiedDate":"2023-09-26"},{"lineNumber":65,"author":{"gitId":"andytoh1"},"content":" int listNumber \u003d i + 1;","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(listNumber + \". \");","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(i) instanceof Todo) {","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"[T]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(i) instanceof Deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":70,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"[D]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":71,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(i) instanceof Event) {","lastModifiedDate":"2023-09-26"},{"lineNumber":72,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"[E]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":73,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":74,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(i).isDone()) stringBuilder.append(\"[X] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":75,"author":{"gitId":"andytoh1"},"content":" else stringBuilder.append(\"[ ] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":76,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(taskList.getTask(i).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":77,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":79,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":80,"author":{"gitId":"andytoh1"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-26"},{"lineNumber":81,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":82,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":83,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":84,"author":{"gitId":"andytoh1"},"content":" * Handles the output of a delete command.","lastModifiedDate":"2023-09-26"},{"lineNumber":85,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":86,"author":{"gitId":"andytoh1"},"content":" * @param removeTask Index of the task to be removed from the list.","lastModifiedDate":"2023-09-26"},{"lineNumber":87,"author":{"gitId":"andytoh1"},"content":" * @param taskList The TaskList object from which the task is to be deleted.","lastModifiedDate":"2023-09-26"},{"lineNumber":88,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":89,"author":{"gitId":"andytoh1"},"content":" public static String deleteMessage(int removeTask, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":90,"author":{"gitId":"andytoh1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-26"},{"lineNumber":91,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":92,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":93,"author":{"gitId":"andytoh1"},"content":" assert removeTask \u003e\u003d 0 : \"Value must be non-negative\";","lastModifiedDate":"2023-09-26"},{"lineNumber":94,"author":{"gitId":"andytoh1"},"content":" assert taskList.getCount() \u003e removeTask : \"Value must be a number in the list\";","lastModifiedDate":"2023-09-26"},{"lineNumber":95,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"This task will be removed!\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":96,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(removeTask) instanceof Todo) {","lastModifiedDate":"2023-09-26"},{"lineNumber":97,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"[T]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":98,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(removeTask) instanceof Deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":99,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"[D]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":100,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(removeTask) instanceof Event) {","lastModifiedDate":"2023-09-26"},{"lineNumber":101,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"[E]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":102,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":103,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(removeTask).isDone()) stringBuilder.append(\"[X] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":104,"author":{"gitId":"andytoh1"},"content":" else stringBuilder.append(\"[ ] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":105,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(taskList.getTask(removeTask).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":106,"author":{"gitId":"andytoh1"},"content":" taskList.deleteTask(removeTask);","lastModifiedDate":"2023-09-26"},{"lineNumber":107,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":108,"author":{"gitId":"andytoh1"},"content":" return formatErrorMessage(\"delete\");","lastModifiedDate":"2023-09-26"},{"lineNumber":109,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":110,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":111,"author":{"gitId":"andytoh1"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-26"},{"lineNumber":112,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":113,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":114,"author":{"gitId":"andytoh1"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":115,"author":{"gitId":"andytoh1"},"content":" * Handles the output of a mark command.","lastModifiedDate":"2023-09-26"},{"lineNumber":116,"author":{"gitId":"andytoh1"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":117,"author":{"gitId":"andytoh1"},"content":" * @param doneTask Index of the task to be marked as done.","lastModifiedDate":"2023-09-26"},{"lineNumber":118,"author":{"gitId":"andytoh1"},"content":" * @param taskList The TaskList object in which the task is to be marked as done.","lastModifiedDate":"2023-09-26"},{"lineNumber":119,"author":{"gitId":"andytoh1"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":120,"author":{"gitId":"andytoh1"},"content":" public static String markMessage(int doneTask, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":121,"author":{"gitId":"andytoh1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-26"},{"lineNumber":122,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":123,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":124,"author":{"gitId":"andytoh1"},"content":" assert doneTask \u003e\u003d 0 : \"Value must be non-negative\";","lastModifiedDate":"2023-09-26"},{"lineNumber":125,"author":{"gitId":"andytoh1"},"content":" assert taskList.getCount() \u003e doneTask : \"Value must be a number in the list\";","lastModifiedDate":"2023-09-26"},{"lineNumber":126,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Well done! This task has been marked as done.\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":127,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(doneTask) instanceof Todo) {","lastModifiedDate":"2023-09-26"},{"lineNumber":128,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"[T]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":129,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(doneTask) instanceof Deadline) {","lastModifiedDate":"2023-09-26"},{"lineNumber":130,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"[D]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":131,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(doneTask) instanceof Event) {","lastModifiedDate":"2023-09-26"},{"lineNumber":132,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"[E]\");","lastModifiedDate":"2023-09-26"},{"lineNumber":133,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":134,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"[X] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":135,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(taskList.getTask(doneTask).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":136,"author":{"gitId":"andytoh1"},"content":" taskList.getTask(doneTask).markAsDone();","lastModifiedDate":"2023-09-26"},{"lineNumber":137,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":138,"author":{"gitId":"andytoh1"},"content":" return formatErrorMessage(\"mark\");","lastModifiedDate":"2023-09-26"},{"lineNumber":139,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":140,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":141,"author":{"gitId":"andytoh1"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-26"},{"lineNumber":142,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":143,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":144,"author":{"gitId":"andytoh1"},"content":" public static String todoMessage(Todo todo, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":145,"author":{"gitId":"andytoh1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-26"},{"lineNumber":146,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":147,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-09-26"},{"lineNumber":148,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Added this task: [T] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":149,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(taskList.getTask(taskList.getCount() - 1).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":150,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":151,"author":{"gitId":"andytoh1"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-26"},{"lineNumber":152,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":153,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":154,"author":{"gitId":"andytoh1"},"content":" public static String deadlineMessage(Deadline deadline, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":155,"author":{"gitId":"andytoh1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-26"},{"lineNumber":156,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":157,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2023-09-26"},{"lineNumber":158,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Added this task: [D] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":159,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(taskList.getTask(taskList.getCount() - 1).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":160,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":161,"author":{"gitId":"andytoh1"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-26"},{"lineNumber":162,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":163,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":164,"author":{"gitId":"andytoh1"},"content":" public static String eventMessage(Event event, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":165,"author":{"gitId":"andytoh1"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-26"},{"lineNumber":166,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":167,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(event);","lastModifiedDate":"2023-09-26"},{"lineNumber":168,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(\"Added this task: [E] \");","lastModifiedDate":"2023-09-26"},{"lineNumber":169,"author":{"gitId":"andytoh1"},"content":" stringBuilder.append(taskList.getTask(taskList.getCount() - 1).getDescription());","lastModifiedDate":"2023-09-26"},{"lineNumber":170,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":171,"author":{"gitId":"andytoh1"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-26"},{"lineNumber":172,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":173,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":174,"author":{"gitId":"andytoh1"},"content":" public static String findMessage(String searchTerm, TaskList taskList) {","lastModifiedDate":"2023-09-26"},{"lineNumber":175,"author":{"gitId":"andytoh1"},"content":" assert searchTerm.length() \u003e 0;","lastModifiedDate":"2023-09-26"},{"lineNumber":176,"author":{"gitId":"andytoh1"},"content":" TaskList resultList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":177,"author":{"gitId":"andytoh1"},"content":" for (int i \u003d 0; i \u003c taskList.getCount(); i++) {","lastModifiedDate":"2023-09-26"},{"lineNumber":178,"author":{"gitId":"andytoh1"},"content":" String taskDescription \u003d taskList.getTask(i).getDescription();","lastModifiedDate":"2023-09-26"},{"lineNumber":179,"author":{"gitId":"andytoh1"},"content":" for (int j \u003d 0; j \u003c\u003d taskDescription.length() - searchTerm.length(); j++) {","lastModifiedDate":"2023-09-26"},{"lineNumber":180,"author":{"gitId":"andytoh1"},"content":" if (taskDescription.substring(j, j+ searchTerm.length()).equals(searchTerm)) {","lastModifiedDate":"2023-09-26"},{"lineNumber":181,"author":{"gitId":"andytoh1"},"content":" resultList.addTask(taskList.getTask(i));","lastModifiedDate":"2023-09-26"},{"lineNumber":182,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-26"},{"lineNumber":183,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":184,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":185,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":186,"author":{"gitId":"andytoh1"},"content":" return listTasks(resultList);","lastModifiedDate":"2023-09-26"},{"lineNumber":187,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":188,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":188}},{"path":"src/test/java/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" public void testSaveTasks() {","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" TaskList originalList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" Storage.load(originalList);","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" Task task1 \u003d new Task(\"Task 1\");","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" Task task2 \u003d new Task(\"Task 2\");","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" testList.addTask(task1);","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" testList.addTask(task2);","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" Storage.saveTasks(testList);","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" TaskList verifyList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" Storage.load(verifyList);","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" assertEquals(verifyList.getTask(0), task1);","lastModifiedDate":"2023-09-26"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" assertEquals(verifyList.getTask(1), task2);","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":22}},{"path":"src/test/java/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-26"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" @Test","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" public void testDeleteTask() {","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" Task task1 \u003d new Task(\"Task 1\");","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" Task task2 \u003d new Task(\"Task 2\");","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(task1);","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(task2);","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" taskList.deleteTask(0);","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" assertEquals(1, taskList.getCount());","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" assertEquals(task2, taskList.getTask(0));","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"andytoh1":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"adkpqweqwdpaskda","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"todo abc","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"deadline abc by sunday","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"deadline abc /by sunday","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"andytoh1":4}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"java -classpath ..\\bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"andytoh1":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":"java -classpath ../bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"andytoh1":1,"-":37}}] diff --git a/andytoh1_ip_master/commits.json b/andytoh1_ip_master/commits.json index 1e20ddc7..20493edc 100644 --- a/andytoh1_ip_master/commits.json +++ b/andytoh1_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"andytoh1":[{"date":"2023-08-24","commitResults":[{"hash":"be54eb62370c7bf4c5f42ebaa63560004397b72e","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"8c01edb381794a18a37bbc7fbe27ad976b28bc33","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"2952594b5ffc710a1ab7b015866ceeae49538a2d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"4afb4e8ac6cd143c44911523f54a1f2cf296c0df","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"f2860d0fd739b4f6e36b813d08ae352e8294aaa0","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"7ff37d08406c0a99195331a4d853bf95e745c133","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":16}}},{"hash":"1cab9410d9a7a0145ed46617b8868386c2c8b7d8","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"537844575b5f68eb31dcd0052598ac599e883bc8","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-03","commitResults":[{"hash":"24743aca20e40d7a6f81a6912bdab27113eac915","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":482,"deletions":7}}},{"hash":"276add239f554cdee0d2894af190d30b2699107d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":370,"deletions":70}}}]},{"date":"2023-09-24","commitResults":[{"hash":"507a00467fee76523c9a6ca8b70a498365260f33","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Duke.java\n","fileTypesAndContributionMap":{}},{"hash":"8f0342d8d73b53db07e14d87335aab775920831f","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3}}}]},{"date":"2023-09-26","commitResults":[{"hash":"0a862f1f97500f32d880675d6f846f097cc9aaf4","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":428,"deletions":375}}},{"hash":"de26dda3cb9f6f77bc8c9ad545b89acad0a53621","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Jar","A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"338f4de7f2f8e130495839f00f65b8d79abebe1a","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":1}}},{"hash":"18f38eeda7031ab39d3a79d25c6f28f16f581c21","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"8305bc353410d5418093467e19b66545b898e93c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Javadoc\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"andytoh1":{"java":538,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":4}},"authorContributionVariance":{"andytoh1":39755.742},"authorDisplayNameMap":{"andytoh1":"CS2103T-F11-3 TOH ..ANDY"}} +{"authorDailyContributionsMap":{"andytoh1":[{"date":"2023-08-24","commitResults":[{"hash":"be54eb62370c7bf4c5f42ebaa63560004397b72e","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"8c01edb381794a18a37bbc7fbe27ad976b28bc33","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"2952594b5ffc710a1ab7b015866ceeae49538a2d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"4afb4e8ac6cd143c44911523f54a1f2cf296c0df","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"f2860d0fd739b4f6e36b813d08ae352e8294aaa0","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"7ff37d08406c0a99195331a4d853bf95e745c133","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":16}}},{"hash":"1cab9410d9a7a0145ed46617b8868386c2c8b7d8","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"537844575b5f68eb31dcd0052598ac599e883bc8","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-03","commitResults":[{"hash":"24743aca20e40d7a6f81a6912bdab27113eac915","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":482,"deletions":7}}},{"hash":"276add239f554cdee0d2894af190d30b2699107d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":370,"deletions":70}}}]},{"date":"2023-09-24","commitResults":[{"hash":"507a00467fee76523c9a6ca8b70a498365260f33","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Duke.java\n","fileTypesAndContributionMap":{}},{"hash":"8f0342d8d73b53db07e14d87335aab775920831f","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3}}}]},{"date":"2023-09-26","commitResults":[{"hash":"0a862f1f97500f32d880675d6f846f097cc9aaf4","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":428,"deletions":375}}},{"hash":"de26dda3cb9f6f77bc8c9ad545b89acad0a53621","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-Jar","A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"338f4de7f2f8e130495839f00f65b8d79abebe1a","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":1}}},{"hash":"18f38eeda7031ab39d3a79d25c6f28f16f581c21","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"8305bc353410d5418093467e19b66545b898e93c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Javadoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"936366f6f480aec68162f9881ef14e763c3985d3","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":0},"java":{"insertions":287,"deletions":67}}},{"hash":"27f48015ef321ae95556e6b58810191c9b71fd38","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"There are several assumptions that are made at any point\nwithin the code. In some cases these will lead to errors.\n\nDocumenting these assumptions will lead to easier debugging\nand a smoother experience for the user if they can find out more easily\nabout their wrong inputs.\n","tags":["A-FullCommitMessage","A-Assertions"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":9,"deletions":6}}},{"hash":"766187e90d648ddedd6075cf6999e1e8a4129f5d","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"Code quality can contribute greatly to readability of the code.\n\nIn this change, multiple long and deeply-nested methods were\nbroken into smaller components so as to avoid confusion down the line.\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":68}}},{"hash":"7f51920dff24bcbd742b63d866be9fb9e350e70e","isMergeCommit":true,"messageTitle":"Merge pull request #2 from andytoh1/branch-A-CodeQuality","messageBody":"Improve code quality","fileTypesAndContributionMap":{}},{"hash":"417acfbf6b0031b2d90a564c8f7abfd5997f4aa7","isMergeCommit":true,"messageTitle":"Merge pull request #3 from andytoh1/branch-A-Assertions","messageBody":"Add assertions","fileTypesAndContributionMap":{}},{"hash":"20de560dfc82bfca3d37bbbe7efd778fa9a42ab7","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1},"md":{"insertions":66,"deletions":14}}}]}]},"authorFileTypeContributionMap":{"andytoh1":{"java":787,"md":59,"fxml":0,"sh":1,"bat":1,"gradle":20,"txt":4}},"authorContributionVariance":{"andytoh1":76307.93},"authorDisplayNameMap":{"andytoh1":"CS2103T-F11-3 TOH ..ANDY"}} diff --git a/archive.zip b/archive.zip index ac04634a..01ce7437 100644 Binary files a/archive.zip and b/archive.zip differ diff --git a/czhiruo_ip_master/commits.json b/czhiruo_ip_master/commits.json index 51d01b86..cc9f13e8 100644 --- a/czhiruo_ip_master/commits.json +++ b/czhiruo_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"czhiruo":[{"date":"2023-08-22","commitResults":[{"hash":"ada60d8b30feca3c33f5ca490cf90d2298e4ec4c","isMergeCommit":false,"messageTitle":"completed level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"2b3d6377f1923c9dd8ce55aa52847c4fd2b56138","isMergeCommit":false,"messageTitle":"completed level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"9f287431db1ead9b0789c3f807f12c47f0208799","isMergeCommit":false,"messageTitle":"completed level 0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"573bd6cf97eb6495691f0d45de34b5ffb7e815ce","isMergeCommit":false,"messageTitle":"completed level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"dab1bd3976588021272ebb22d10f0f113573c6c1","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"747d1e9e8a0b75b3bfe5d2d2eac560887a78b761","isMergeCommit":false,"messageTitle":"completed level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}}]},{"date":"2023-08-23","commitResults":[{"hash":"d15141bf772f2ef9f92e78f90a9569556c3fb093","isMergeCommit":false,"messageTitle":"completed level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":8}}},{"hash":"892541ad6d53a985fe397fedf03582c3c7fe0742","isMergeCommit":false,"messageTitle":"completed level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":10}}}]},{"date":"2023-08-24","commitResults":[{"hash":"59adac6472a33b1b17033a121711ff26293fce66","isMergeCommit":false,"messageTitle":"completed level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":16}}},{"hash":"64e68f7ec4b0e51cf6d302500243c7ae5bc102cc","isMergeCommit":false,"messageTitle":"completed level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"a45e040f604b0e64a943e7b4e98c714ed88eb237","isMergeCommit":false,"messageTitle":"completed Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":62,"deletions":23}}},{"hash":"8b8c38a65734b385d33d07bb6cc515c9b5205d45","isMergeCommit":false,"messageTitle":"added javadocs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":135,"deletions":51}}}]},{"date":"2023-08-30","commitResults":[{"hash":"effbc012e2bab24dbf72ece0b37eae4efcf29201","isMergeCommit":false,"messageTitle":"Rename the file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":42}}}]},{"date":"2023-08-31","commitResults":[{"hash":"2ef5c4175b6b487a1cc94d8da5d8d25cc066a0ce","isMergeCommit":false,"messageTitle":"Format string output","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":116,"deletions":39}}},{"hash":"0cebdd211cad4c71041ccbc8c88537474e039d26","isMergeCommit":false,"messageTitle":"Complete level 7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"8d549c1190df5e3c88aa9c753422b64d62c38488","isMergeCommit":false,"messageTitle":"Complete level 7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"998d70b468940c90a1a38bc0bf3df016d2a91e48","isMergeCommit":false,"messageTitle":"Complete level 7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"40cc619b17bfc35825c410b1a4ca541647062c45","isMergeCommit":false,"messageTitle":"Create TaskList class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":222,"deletions":216}}},{"hash":"3c371dc3d83391ee6aeb4e51ac85bf231929836a","isMergeCommit":false,"messageTitle":"Complete Level 8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":21,"deletions":6}}},{"hash":"bb60007fc338eccfc840c777c25ec05892dda1cf","isMergeCommit":false,"messageTitle":"Add More OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":120,"deletions":77}}},{"hash":"5f9afac6f381e0c2e5574f39f50c7da37b637c82","isMergeCommit":false,"messageTitle":"Add to package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":41,"deletions":12}}},{"hash":"3cacf3d85459dadd06ec84d9009aa085bbb4710d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"0699f5fcb88f0ae3ac450662970d7292dfa7f12e","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":126,"deletions":17}}},{"hash":"c9270f6cdf247174e3f104377d6460a7b3bb8039","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","tags":["A-JavaDoc","A-Gradle"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":393,"deletions":141}}},{"hash":"01cfe15980b3fa71ec6cedc907a9c5382cc9aae9","isMergeCommit":false,"messageTitle":"Format code to coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":7}}},{"hash":"09cddaea831e029017911f8f78c0072a755c8cb4","isMergeCommit":false,"messageTitle":"Complete Level 9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":24}}},{"hash":"0f1d5d6fd6e5c89bc03405875698d352d938e976","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/test/java/pau/task/TaskListTest.java\n#\tsrc/test/java/pau/util/UiTest.java\n","fileTypesAndContributionMap":{}},{"hash":"fc2b8d78b1374081a3d3549a3d3474d9a2529209","isMergeCommit":false,"messageTitle":"Complete Level 9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"31ddfe2508bc5d577e6470f9bf6b6447577b708a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bc7e317b2772b9cfe1abb3e8673604a48d6aef1c","isMergeCommit":false,"messageTitle":"Fix Errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":0}}}]},{"date":"2023-09-10","commitResults":[{"hash":"506659432d1989851ef8158bd81d1e7821be7773","isMergeCommit":false,"messageTitle":"Set Up GUI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":2},"txt":{"insertions":2,"deletions":5},"java":{"insertions":92,"deletions":4}}}]},{"date":"2023-09-14","commitResults":[{"hash":"cdf0018f808b5822c81ab24e272da29f7308a6fa","isMergeCommit":false,"messageTitle":"Implement Checkstyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":23}}}]},{"date":"2023-09-16","commitResults":[{"hash":"6f6d05a922d323762671745ee3af4b5c21fe00ef","isMergeCommit":false,"messageTitle":"Complete GUI","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":282,"deletions":285}}}]},{"date":"2023-09-18","commitResults":[{"hash":"b62cad319621948eff1cde23fec8fa3558a236f3","isMergeCommit":false,"messageTitle":"Exit Chatbot For Bye Command","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":29,"deletions":13}}},{"hash":"2c14c16538b7d863782ea21038b6b54c53082745","isMergeCommit":false,"messageTitle":"Add Assertion","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":7,"deletions":4}}}]},{"date":"2023-09-19","commitResults":[{"hash":"6c375e5724a4ac7f0b83e193854b66b0aa3fa368","isMergeCommit":false,"messageTitle":"Improve Code Quality","messageBody":"There was no help command.\n\nUsers would not be able to ask for help to create tasks.\n\nA help command is added that lists out how to execute the different commands.\n","tags":["BCD-Extension","A-FullCommitMessage","A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}}]},{"date":"2023-09-22","commitResults":[{"hash":"b39ad8209c287830217d94e0a1eec252bbe6f6d6","isMergeCommit":true,"messageTitle":"Merge pull request #2 from czhiruo/branch-A-Assertions","messageBody":"Add Assertion","fileTypesAndContributionMap":{}},{"hash":"66ab0679b7d11e75b43160f118d0b9c4d4fd567f","isMergeCommit":true,"messageTitle":"Merge pull request #3 from czhiruo/branch-A-CodeQuality","messageBody":"Improve Code Quality","fileTypesAndContributionMap":{}}]},{"date":"2023-09-23","commitResults":[{"hash":"aeec787cd24a7e24d328e4620d390a8a43751485","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"fxml":{"insertions":43,"deletions":7},"java":{"insertions":2,"deletions":3},"md":{"insertions":20,"deletions":22}}},{"hash":"32c50c12c089eac9e508d623c7a663def4171e82","isMergeCommit":false,"messageTitle":"Improve UI and Add Clear Command","messageBody":"Added background colours for user and pau dialog boxes.\n\nAdded title for the stage.\n\nAdded a clear command to clear all the tasks in the list.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"fxml":{"insertions":3,"deletions":26},"java":{"insertions":54,"deletions":20}}},{"hash":"e2dbca59b6fadad4cea2c830c2583d77577d025b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":17,"deletions":20}}},{"hash":"c37b053e565e14f7907f4c55c66ba4247968c916","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":163,"deletions":19}}},{"hash":"fd1cda3492865f5f5e16bcd26b0e718bec86d95b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":13,"deletions":13}}},{"hash":"31331bd4423ed1fba5b7ebec6b0a960cd4a5454d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":49,"deletions":0}}},{"hash":"d159252e2f864ced8667f3558238e715e8184a4d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":34,"deletions":30}}},{"hash":"3635ab74e360e3e1ae4f11195b4a745be60325ac","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":14,"deletions":3}}},{"hash":"e2c104990c44f912831443fadd85ea9f358f14d6","isMergeCommit":false,"messageTitle":"Update UI","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4},"fxml":{"insertions":2,"deletions":2},"java":{"insertions":6,"deletions":6}}},{"hash":"d67a5ccca6660d0d3b5a4c8ed5fa7b74069ed167","isMergeCommit":false,"messageTitle":"Fix Tests and Catch Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":83}}},{"hash":"bd4b33054e9c05790074181ec06b5d3001cc4fa7","isMergeCommit":false,"messageTitle":"Fix Tests and Catch Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}}]},{"date":"2023-09-24","commitResults":[{"hash":"4474afb1a67f3f11bd297d04295cb86c9b73e167","isMergeCommit":false,"messageTitle":"Fix Code Breaking","messageBody":"","tags":["v1.0.0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":16}}}]}]},"authorFileTypeContributionMap":{"czhiruo":{"java":1104,"md":233,"fxml":48,"sh":0,"bat":0,"gradle":18,"txt":5}},"authorContributionVariance":{"czhiruo":58922.355},"authorDisplayNameMap":{"czhiruo":"CS2103T-W12-3 CHEN..IRUO"}} +{"authorDailyContributionsMap":{"czhiruo":[{"date":"2023-08-22","commitResults":[{"hash":"ada60d8b30feca3c33f5ca490cf90d2298e4ec4c","isMergeCommit":false,"messageTitle":"completed level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"2b3d6377f1923c9dd8ce55aa52847c4fd2b56138","isMergeCommit":false,"messageTitle":"completed level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"9f287431db1ead9b0789c3f807f12c47f0208799","isMergeCommit":false,"messageTitle":"completed level 0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}},{"hash":"573bd6cf97eb6495691f0d45de34b5ffb7e815ce","isMergeCommit":false,"messageTitle":"completed level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"dab1bd3976588021272ebb22d10f0f113573c6c1","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"747d1e9e8a0b75b3bfe5d2d2eac560887a78b761","isMergeCommit":false,"messageTitle":"completed level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}}]},{"date":"2023-08-23","commitResults":[{"hash":"d15141bf772f2ef9f92e78f90a9569556c3fb093","isMergeCommit":false,"messageTitle":"completed level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":8}}},{"hash":"892541ad6d53a985fe397fedf03582c3c7fe0742","isMergeCommit":false,"messageTitle":"completed level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":10}}}]},{"date":"2023-08-24","commitResults":[{"hash":"59adac6472a33b1b17033a121711ff26293fce66","isMergeCommit":false,"messageTitle":"completed level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":16}}},{"hash":"64e68f7ec4b0e51cf6d302500243c7ae5bc102cc","isMergeCommit":false,"messageTitle":"completed level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"a45e040f604b0e64a943e7b4e98c714ed88eb237","isMergeCommit":false,"messageTitle":"completed Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":62,"deletions":23}}},{"hash":"8b8c38a65734b385d33d07bb6cc515c9b5205d45","isMergeCommit":false,"messageTitle":"added javadocs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":135,"deletions":51}}}]},{"date":"2023-08-30","commitResults":[{"hash":"effbc012e2bab24dbf72ece0b37eae4efcf29201","isMergeCommit":false,"messageTitle":"Rename the file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":42}}}]},{"date":"2023-08-31","commitResults":[{"hash":"2ef5c4175b6b487a1cc94d8da5d8d25cc066a0ce","isMergeCommit":false,"messageTitle":"Format string output","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":116,"deletions":39}}},{"hash":"0cebdd211cad4c71041ccbc8c88537474e039d26","isMergeCommit":false,"messageTitle":"Complete level 7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"8d549c1190df5e3c88aa9c753422b64d62c38488","isMergeCommit":false,"messageTitle":"Complete level 7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"998d70b468940c90a1a38bc0bf3df016d2a91e48","isMergeCommit":false,"messageTitle":"Complete level 7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"40cc619b17bfc35825c410b1a4ca541647062c45","isMergeCommit":false,"messageTitle":"Create TaskList class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":222,"deletions":216}}},{"hash":"3c371dc3d83391ee6aeb4e51ac85bf231929836a","isMergeCommit":false,"messageTitle":"Complete Level 8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":21,"deletions":6}}},{"hash":"bb60007fc338eccfc840c777c25ec05892dda1cf","isMergeCommit":false,"messageTitle":"Add More OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":120,"deletions":77}}},{"hash":"5f9afac6f381e0c2e5574f39f50c7da37b637c82","isMergeCommit":false,"messageTitle":"Add to package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":41,"deletions":12}}},{"hash":"3cacf3d85459dadd06ec84d9009aa085bbb4710d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-01","commitResults":[{"hash":"0699f5fcb88f0ae3ac450662970d7292dfa7f12e","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":126,"deletions":17}}},{"hash":"c9270f6cdf247174e3f104377d6460a7b3bb8039","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","tags":["A-JavaDoc","A-Gradle"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":393,"deletions":141}}},{"hash":"01cfe15980b3fa71ec6cedc907a9c5382cc9aae9","isMergeCommit":false,"messageTitle":"Format code to coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":7}}},{"hash":"09cddaea831e029017911f8f78c0072a755c8cb4","isMergeCommit":false,"messageTitle":"Complete Level 9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":24}}},{"hash":"0f1d5d6fd6e5c89bc03405875698d352d938e976","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/test/java/pau/task/TaskListTest.java\n#\tsrc/test/java/pau/util/UiTest.java\n","fileTypesAndContributionMap":{}},{"hash":"fc2b8d78b1374081a3d3549a3d3474d9a2529209","isMergeCommit":false,"messageTitle":"Complete Level 9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"31ddfe2508bc5d577e6470f9bf6b6447577b708a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bc7e317b2772b9cfe1abb3e8673604a48d6aef1c","isMergeCommit":false,"messageTitle":"Fix Errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":0}}}]},{"date":"2023-09-10","commitResults":[{"hash":"506659432d1989851ef8158bd81d1e7821be7773","isMergeCommit":false,"messageTitle":"Set Up GUI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":2},"txt":{"insertions":2,"deletions":5},"java":{"insertions":92,"deletions":4}}}]},{"date":"2023-09-14","commitResults":[{"hash":"cdf0018f808b5822c81ab24e272da29f7308a6fa","isMergeCommit":false,"messageTitle":"Implement Checkstyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":23}}}]},{"date":"2023-09-16","commitResults":[{"hash":"6f6d05a922d323762671745ee3af4b5c21fe00ef","isMergeCommit":false,"messageTitle":"Complete GUI","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":282,"deletions":285}}}]},{"date":"2023-09-18","commitResults":[{"hash":"b62cad319621948eff1cde23fec8fa3558a236f3","isMergeCommit":false,"messageTitle":"Exit Chatbot For Bye Command","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":29,"deletions":13}}},{"hash":"2c14c16538b7d863782ea21038b6b54c53082745","isMergeCommit":false,"messageTitle":"Add Assertion","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":7,"deletions":4}}}]},{"date":"2023-09-19","commitResults":[{"hash":"6c375e5724a4ac7f0b83e193854b66b0aa3fa368","isMergeCommit":false,"messageTitle":"Improve Code Quality","messageBody":"There was no help command.\n\nUsers would not be able to ask for help to create tasks.\n\nA help command is added that lists out how to execute the different commands.\n","tags":["BCD-Extension","A-FullCommitMessage","A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}}]},{"date":"2023-09-22","commitResults":[{"hash":"b39ad8209c287830217d94e0a1eec252bbe6f6d6","isMergeCommit":true,"messageTitle":"Merge pull request #2 from czhiruo/branch-A-Assertions","messageBody":"Add Assertion","fileTypesAndContributionMap":{}},{"hash":"66ab0679b7d11e75b43160f118d0b9c4d4fd567f","isMergeCommit":true,"messageTitle":"Merge pull request #3 from czhiruo/branch-A-CodeQuality","messageBody":"Improve Code Quality","fileTypesAndContributionMap":{}}]},{"date":"2023-09-23","commitResults":[{"hash":"aeec787cd24a7e24d328e4620d390a8a43751485","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"fxml":{"insertions":43,"deletions":7},"java":{"insertions":2,"deletions":3},"md":{"insertions":20,"deletions":22}}},{"hash":"32c50c12c089eac9e508d623c7a663def4171e82","isMergeCommit":false,"messageTitle":"Improve UI and Add Clear Command","messageBody":"Added background colours for user and pau dialog boxes.\n\nAdded title for the stage.\n\nAdded a clear command to clear all the tasks in the list.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"fxml":{"insertions":3,"deletions":26},"java":{"insertions":54,"deletions":20}}},{"hash":"e2dbca59b6fadad4cea2c830c2583d77577d025b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":17,"deletions":20}}},{"hash":"c37b053e565e14f7907f4c55c66ba4247968c916","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":163,"deletions":19}}},{"hash":"fd1cda3492865f5f5e16bcd26b0e718bec86d95b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":13,"deletions":13}}},{"hash":"31331bd4423ed1fba5b7ebec6b0a960cd4a5454d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":49,"deletions":0}}},{"hash":"d159252e2f864ced8667f3558238e715e8184a4d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":34,"deletions":30}}},{"hash":"3635ab74e360e3e1ae4f11195b4a745be60325ac","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":14,"deletions":3}}},{"hash":"e2c104990c44f912831443fadd85ea9f358f14d6","isMergeCommit":false,"messageTitle":"Update UI","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4},"fxml":{"insertions":2,"deletions":2},"java":{"insertions":6,"deletions":6}}},{"hash":"d67a5ccca6660d0d3b5a4c8ed5fa7b74069ed167","isMergeCommit":false,"messageTitle":"Fix Tests and Catch Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":83}}},{"hash":"bd4b33054e9c05790074181ec06b5d3001cc4fa7","isMergeCommit":false,"messageTitle":"Fix Tests and Catch Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":5}}}]},{"date":"2023-09-24","commitResults":[{"hash":"4474afb1a67f3f11bd297d04295cb86c9b73e167","isMergeCommit":false,"messageTitle":"Fix Code Breaking","messageBody":"","tags":["v1.0.0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":16}}}]}]},"authorFileTypeContributionMap":{"czhiruo":{"java":1104,"md":233,"fxml":48,"sh":0,"bat":0,"gradle":18,"txt":5}},"authorContributionVariance":{"czhiruo":58922.355},"authorDisplayNameMap":{"czhiruo":"CS2103T-W12-3 CHEN..IRUO"}} diff --git a/dloh2236_ip_master/authorship.json b/dloh2236_ip_master/authorship.json index cca41b41..b942660e 100644 --- a/dloh2236_ip_master/authorship.json +++ b/dloh2236_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":"dloh2236"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-03"},{"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":"dloh2236"},"content":" ","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" mainClass.set(\"oreo.Launcher\")","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" archiveBaseName \u003d \"oreo\"","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":"checkstyle{","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dloh2236":21,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"\u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":" \u003ca href\u003d\"https://github.com/dloh2236/ip\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":" \u003cimg src\u003d\"https://i.imgur.com/VLUORmp.png\" alt\u003d\"Logo\" width\u003d\"72\" height\u003d\"72\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":" \u003c/a\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"\u003c/p\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":" \u003ch1 align\u003d\"center\"\u003eOreo\u003c/h1\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":" \u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" \u003cb\u003eYour trusty canine friend for all your tasks! 🐶\u003c/b\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" \u003c/p\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"## Table of contents","lastModifiedDate":"2023-09-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"- [About](#about)","lastModifiedDate":"2023-09-24"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"- [Quick Start](#quick-start)","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"- [Key Features](#key-features)","lastModifiedDate":"2023-09-24"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"- [Additional Features](#additional-features)","lastModifiedDate":"2023-09-24"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"- [Date Time Formats](#date-time-formats)","lastModifiedDate":"2023-09-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"## About","lastModifiedDate":"2023-09-24"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"Oreo is your trusty canine companion and personal assistant. She\u0027s always by your side, ready to assist. Oreo excels at","lastModifiedDate":"2023-09-24"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"keeping track of tasks and schedules, effortlessly organizing your day. Her boundless energy and unwavering loyalty","lastModifiedDate":"2023-09-24"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"make her the perfect partner in the chaos of your daily routine. Providing a comforting presence during late-night work","lastModifiedDate":"2023-09-24"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"sessions, Oreo will become an indispensable part of your life.","lastModifiedDate":"2023-09-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":"###### Here is a preview:","lastModifiedDate":"2023-09-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":"\u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" \u003ca href\u003d\"https://github.com/dloh2236/ip\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" \u003cimg src\u003d","lastModifiedDate":"2023-09-24"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" \"https://raw.githubusercontent.com/nus-cs2103-AY2324S1/ip/61221a4e1829f430950f4c8166eeeff3700b57ef/docs/Ui.png\"","lastModifiedDate":"2023-09-24"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" alt\u003d\"Logo\" height\u003d\"500\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" \u003c/a\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"\u003c/p\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":"## Quick Start","lastModifiedDate":"2023-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":"Oreo v1.0.1 is available for download [here](https://github.com/dloh2236/ip/releases/tag/A-Releasev1.0.1).","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":"### System Pre-requisites","lastModifiedDate":"2023-09-24"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":"Make sure your system is running on Java 11, as this might affect your experience while using the chatbot.","lastModifiedDate":"2023-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":"\u003e [!IMPORTANT]","lastModifiedDate":"2023-09-24"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":"\u003e For Mac users who are unable to run the JAR file, you will have to install Azul build of Open JDK 11 version","lastModifiedDate":"2023-09-24"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":"\u003e choose `JDK FX` version. The download link can be found ","lastModifiedDate":"2023-09-24"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":"\u003e [here](https://www.azul.com/downloads/?version\u003djava-11-lts\u0026os\u003dmacos\u0026architecture\u003darm-64-bit\u0026package\u003djdk-fx).","lastModifiedDate":"2023-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":"\u003cdetails\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":"\u003csummary\u003eDate Time Parsing for \u0027am\u0027 and \u0027pm\u0027 for Certain Java 11\u003c/summary\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":"\u003c/details\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":"### Starting up Oreo","lastModifiedDate":"2023-09-24"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":"Simply put `oreo.jar` into your desired folder, open your terminal in that folder and enter:","lastModifiedDate":"2023-09-24"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":"`java -jar oreo.jar` and Oreo would be up and running to assist you!","lastModifiedDate":"2023-09-24"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":"\u003e [!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":"\u003e Oreo will create a data storage file \"oreo.txt\" where all your tasks will be saved in","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":"\u003e the program\u0027s own format. To ensure that your task is saved properly for your next run,","lastModifiedDate":"2023-09-24"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":"\u003e please do not tamper or move the file from its current location.","lastModifiedDate":"2023-09-24"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":"You are all set! Start by saying `hi` to Oreo.","lastModifiedDate":"2023-09-24"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":"\u003cdetails\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":"\u003csummary style\u003d\"font-size: 14px;\"\u003eIf Oreo Fails to Start!\u003c/summary\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":"\u003e Try these:","lastModifiedDate":"2023-09-24"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":"\u003e 1. Make sure you are running Java 11.","lastModifiedDate":"2023-09-24"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":"\u003e 2. If you are a Mac user see [System Pre-requisites](#system-pre-requisites).","lastModifiedDate":"2023-09-24"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":"\u003e 2. Delete \"oreo.txt\" file if it exists in the same directory. The file is unfortunately corrupted.","lastModifiedDate":"2023-09-24"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":"\u003e 3. Move `oreo.jar` to another folder and try again.","lastModifiedDate":"2023-09-24"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":"\u003c/details\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":"## Key Features","lastModifiedDate":"2023-09-24"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":"Here are some of the key features that Oreo has!","lastModifiedDate":"2023-09-24"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":"### Help (`help`, `help \u003cCOMMAND\u003e`)","lastModifiedDate":"2023-09-24"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":"#### Help Commands","lastModifiedDate":"2023-09-24"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":"Provides in-app help, through in-app guides, to get you started in the app.","lastModifiedDate":"2023-09-24"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":"`help` - provides a list of all the commands and a brief description of what they do.","lastModifiedDate":"2023-09-24"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":"`help \u003cCOMMAND\u003e` - provides a detailed description of the specified `\u003cCOMMAND\u003e`, use this to learn more about the command and","lastModifiedDate":"2023-09-24"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":"it\u0027s proper syntax.","lastModifiedDate":"2023-09-24"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":"|:---------------:|-------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":"| `help` | \u003cspan style \u003d\u0027color: green;\u0027\u003eShows a list of all commands and brief descriptions of each command\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":"| `help delete` | \u003cspan style \u003d\u0027color: green;\u0027\u003eShows detailed explanation fo the delete command\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":"| `help me` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input of unknown command\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":"### Adding tasks (`todo`, `deadlines`, `events`)","lastModifiedDate":"2023-09-24"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":"#### Todo tasks","lastModifiedDate":"2023-09-24"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":"Creates a non-time-sensitive task.","lastModifiedDate":"2023-09-24"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":"`todo \u003cDESCRIPTION\u003e` - creates a task with the specified description.","lastModifiedDate":"2023-09-24"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":"|-----------------------|--------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":"| `todo play with oreo` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates a todo task called \"play with oreo\"\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":"| `todo` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input without a description\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":"\u003e Don\u0027t worry about making formatting errors when using Oreo. Oreo is helpful and is more than happy to provide precise","lastModifiedDate":"2023-09-24"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":"\u003e help when there is any improper syntax. Use in-app `help todo` for further guidance when using the app.","lastModifiedDate":"2023-09-24"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":"#### Deadline tasks","lastModifiedDate":"2023-09-24"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":"Creates a time-sensitive deadline task with a specified end date time.","lastModifiedDate":"2023-09-24"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":"`deadline \u003cDESCRIPTION\u003e /by \u003cDATETIME\u003e` - creates a deadline task with a description and \"/by\" a date time specified.","lastModifiedDate":"2023-09-24"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":"\u003cdetails\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":"\u003csummary\u003eNotes on deadline date time formatting\u003c/summary\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":"1. If there is both date and time input, both will be saved accordingly. This is the recommended way to save past deadlines or else oreo will assume either the date or the year of the date time input. See [Date Time Assumptions](#date-time-assumptions).","lastModifiedDate":"2023-09-24"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":"2. If there is a date-only input, time will not be included in the saved task.","lastModifiedDate":"2023-09-24"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":" ","lastModifiedDate":"2023-09-24"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":"3. If there is a time-only input, the date will be set to the next occurrence of the time.","lastModifiedDate":"2023-09-24"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":"\u003c/details\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":"For more info on date time formats, see [Date Time Formats](#date-time-formats)","lastModifiedDate":"2023-09-24"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":"|--------------------------------------------|------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":"| `deadline feed oreo /by 01/01/2023, 1800` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates a deadline task to feed oreo by 1st Jan 2023 6:00 PM\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":"| `deadline buy oreo toy /by 1 Jan` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates a deadline task to get Oreo a toy by the next occurrence of 1st Jan\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":"| `deadline bathe oreo /by 6:30pm` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates a deadline task to bathe oreo by next occurrence of 6:30 PM\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":"| `deadline /by 6:30pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input without description\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":"| `deadline feed oreo /by` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input without date time input\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":"| `deadline feed oreo/by6:30pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input no whitespace _around_ `/by`\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":"| `deadline feed oreo /by 01/01/2023 6:30pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** date time input, missing comma\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":"\u003e Don\u0027t worry about making formatting errors when using Oreo. Oreo is helpful and is more than happy to provide precise","lastModifiedDate":"2023-09-24"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":"\u003e help when there is any improper syntax. Use in-app `help deadline` for further guidance when using the app. ","lastModifiedDate":"2023-09-24"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":"#### Event tasks","lastModifiedDate":"2023-09-24"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":"Creates a time-sensitive task with both a specified start and end date time.","lastModifiedDate":"2023-09-24"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":"`event \u003cDESCRIPTION\u003e /from \u003cDATETIME\u003e /to \u003cDATETIME\u003e` - creates an event task with description, `from` date time and a","lastModifiedDate":"2023-09-24"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":"`to` date time specified.","lastModifiedDate":"2023-09-24"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":"**Event `\u003cDATETIME\u003e` combinations accepted:**","lastModifiedDate":"2023-09-24"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":"| `/from` | `/to` |","lastModifiedDate":"2023-09-24"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":"|:--------------:|:------------:|","lastModifiedDate":"2023-09-24"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":"| `date, time` | `date, time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":"| `date, time` | `time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":"| `date` | `date` |","lastModifiedDate":"2023-09-24"},{"lineNumber":165,"author":{"gitId":"dloh2236"},"content":"| `time` | `time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":166,"author":{"gitId":"dloh2236"},"content":"| `time` | `date, time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":167,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":168,"author":{"gitId":"dloh2236"},"content":"If this is too confusing, just do what makes sense!","lastModifiedDate":"2023-09-24"},{"lineNumber":169,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":170,"author":{"gitId":"dloh2236"},"content":"###### General Rules:","lastModifiedDate":"2023-09-24"},{"lineNumber":171,"author":{"gitId":"dloh2236"},"content":"\u003e 1. If `/from` or `/to` has a time, both **must** have a time.","lastModifiedDate":"2023-09-24"},{"lineNumber":172,"author":{"gitId":"dloh2236"},"content":"\u003e 1. `/to` must be after `/from`.","lastModifiedDate":"2023-09-24"},{"lineNumber":173,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":174,"author":{"gitId":"dloh2236"},"content":"\u003cdetails\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":175,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":176,"author":{"gitId":"dloh2236"},"content":"\u003csummary\u003eMore notes on event date time formatting\u003c/summary\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":177,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":178,"author":{"gitId":"dloh2236"},"content":"\u003e 1. Only date input will not include a time saved in the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":179,"author":{"gitId":"dloh2236"},"content":"\u003e 1. Only time input will set a date with reference to the `/to` time and give the next occurrence of that duration.","lastModifiedDate":"2023-09-24"},{"lineNumber":180,"author":{"gitId":"dloh2236"},"content":"\u003e 1. For `time` to `date, time` input, the inferred date for `/from` will be the next occurrence of that time instead of.","lastModifiedDate":"2023-09-24"},{"lineNumber":181,"author":{"gitId":"dloh2236"},"content":"\u003e referencing the `/to` time.","lastModifiedDate":"2023-09-24"},{"lineNumber":182,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":183,"author":{"gitId":"dloh2236"},"content":"\u003c/details\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":184,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":185,"author":{"gitId":"dloh2236"},"content":"For more info on accepted date time formats, see [Date Time Formats](#date-time-formats)","lastModifiedDate":"2023-09-24"},{"lineNumber":186,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":187,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":188,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":189,"author":{"gitId":"dloh2236"},"content":"|-------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":190,"author":{"gitId":"dloh2236"},"content":"| `event playtime /from 01/01/2023, 1200 /to 6:00pm` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates an event task for playtime on Jan 1 2023 from 12:00 PM - 6:00 PM\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":191,"author":{"gitId":"dloh2236"},"content":"| `event staycation /from 1 Jan, 1200 /to Jan 3, 12:00` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates an event task for stay-cation for the next occurrence of Jan 1 at 12:00 PM to Jan 3 12:00 PM for next occurence of the of date range\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":192,"author":{"gitId":"dloh2236"},"content":"| `event birthday /from 30 oct /to 6 nov` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates an event task for Oreo\u0027s birthday from Oct 30 to Nov 6 without any time saved\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":193,"author":{"gitId":"dloh2236"},"content":"| `event walk oreo /from 17:00 /to 1800` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates an event task to walk oreo for the next occurrence of 5:00 PM to 6:00 PM\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":194,"author":{"gitId":"dloh2236"},"content":"| `event holiday /from 5pm /to 3 Jan, 12pm` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates an event task for a holiday from the next occurrence of 5:00 PM to the next occurrence of Jan 3, 12pm\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":195,"author":{"gitId":"dloh2236"},"content":"| `event /from 5pm /to 3 Jan, 12pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input without description\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":196,"author":{"gitId":"dloh2236"},"content":"| `event holiday /from /to ` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input without date time input\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":197,"author":{"gitId":"dloh2236"},"content":"| `event holiday/from5pm/to3 Jan, 12pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input no whitespace _around_ `/from` and `/to`\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":198,"author":{"gitId":"dloh2236"},"content":"| `event holiday /from 1 Jan /to 3 Jan, 12pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input either `/from` or `/to` has time but the other does not\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":199,"author":{"gitId":"dloh2236"},"content":"| `event holiday /from 1 Jan 12pm /to 3 Jan, 12pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** date time input, missing comma\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":200,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":201,"author":{"gitId":"dloh2236"},"content":"\u003e Don\u0027t worry about making formatting errors when using Oreo. Oreo is helpful and is more than happy to provide precise","lastModifiedDate":"2023-09-24"},{"lineNumber":202,"author":{"gitId":"dloh2236"},"content":"\u003e help when there is any improper syntax. Use the in-app `help event` for further guidance when using the app.","lastModifiedDate":"2023-09-24"},{"lineNumber":203,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":204,"author":{"gitId":"dloh2236"},"content":"### Deleting Tasks (`delete`, `clear`)","lastModifiedDate":"2023-09-24"},{"lineNumber":205,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":206,"author":{"gitId":"dloh2236"},"content":"#### Delete Commands","lastModifiedDate":"2023-09-24"},{"lineNumber":207,"author":{"gitId":"dloh2236"},"content":"Deletes the task at the index specified. It can also be used to delete all tasks, similar to \"clear\".","lastModifiedDate":"2023-09-24"},{"lineNumber":208,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":209,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":210,"author":{"gitId":"dloh2236"},"content":"`delete \u003cINDEX\u003e` - deletes task at the specified index.","lastModifiedDate":"2023-09-24"},{"lineNumber":211,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":212,"author":{"gitId":"dloh2236"},"content":"`delete all` - deletes all tasks in the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":213,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":214,"author":{"gitId":"dloh2236"},"content":"\u003e [!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":215,"author":{"gitId":"dloh2236"},"content":"\u003e `\u003cINDEX\u003e` refers to the position of the task in the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":216,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":217,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":218,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":219,"author":{"gitId":"dloh2236"},"content":"|:--------------:|--------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":220,"author":{"gitId":"dloh2236"},"content":"| `delete 1` | \u003cspan style \u003d\u0027color: green;\u0027\u003eDeletes task at index 1\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":221,"author":{"gitId":"dloh2236"},"content":"| `delete all` | \u003cspan style \u003d\u0027color: green;\u0027\u003eClears current task list\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":222,"author":{"gitId":"dloh2236"},"content":"| `delete -1` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input of index\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":223,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":224,"author":{"gitId":"dloh2236"},"content":"#### Clear Command","lastModifiedDate":"2023-09-24"},{"lineNumber":225,"author":{"gitId":"dloh2236"},"content":"Deletes all tasks in the list. Similar to \"delete all\".","lastModifiedDate":"2023-09-24"},{"lineNumber":226,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":227,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":228,"author":{"gitId":"dloh2236"},"content":"`clear` - deletes all tasks in the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":229,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":230,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":231,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":232,"author":{"gitId":"dloh2236"},"content":"|:---------:|------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":233,"author":{"gitId":"dloh2236"},"content":"| `clear` | \u003cspan style \u003d\u0027color: green;\u0027\u003eDeletes all task in the list\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":234,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":235,"author":{"gitId":"dloh2236"},"content":"\u003e [!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":236,"author":{"gitId":"dloh2236"},"content":"\u003e `clear` ignores any other input after the command.","lastModifiedDate":"2023-09-24"},{"lineNumber":237,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":238,"author":{"gitId":"dloh2236"},"content":"### Viewing Tasks (`list`, `find`)","lastModifiedDate":"2023-09-24"},{"lineNumber":239,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":240,"author":{"gitId":"dloh2236"},"content":"#### List Command","lastModifiedDate":"2023-09-24"},{"lineNumber":241,"author":{"gitId":"dloh2236"},"content":"Displays the list of tasks you currently have. This includes the type of task, whether it is done and the date and time","lastModifiedDate":"2023-09-24"},{"lineNumber":242,"author":{"gitId":"dloh2236"},"content":"(as specified).","lastModifiedDate":"2023-09-24"},{"lineNumber":243,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":244,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":245,"author":{"gitId":"dloh2236"},"content":"`list` - shows all the tasks that are recorded by the user.","lastModifiedDate":"2023-09-24"},{"lineNumber":246,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":247,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":248,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":249,"author":{"gitId":"dloh2236"},"content":"|:---------:|---------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":250,"author":{"gitId":"dloh2236"},"content":"| `list` | \u003cspan style \u003d\u0027color: green;\u0027\u003eShows all task recorded by user\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":251,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":252,"author":{"gitId":"dloh2236"},"content":"\u003e [!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":253,"author":{"gitId":"dloh2236"},"content":"\u003e `list` ignores any other input after the command.","lastModifiedDate":"2023-09-24"},{"lineNumber":254,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":255,"author":{"gitId":"dloh2236"},"content":"#### Find Command","lastModifiedDate":"2023-09-24"},{"lineNumber":256,"author":{"gitId":"dloh2236"},"content":"Finds any relevant tasks with a description that matches the keyword specified.","lastModifiedDate":"2023-09-24"},{"lineNumber":257,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":258,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":259,"author":{"gitId":"dloh2236"},"content":"`find \u003cKEYWORD\u003e` - finds tasks with a description that matches the keyword and displays it.","lastModifiedDate":"2023-09-24"},{"lineNumber":260,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":261,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":262,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":263,"author":{"gitId":"dloh2236"},"content":"|:-------------:|-----------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":264,"author":{"gitId":"dloh2236"},"content":"| `find oreo` | \u003cspan style \u003d\u0027color: green;\u0027\u003eDisplays all tasks with keyword of \"oreo\"\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":265,"author":{"gitId":"dloh2236"},"content":"| `find` | \u003cspan style \u003d\u0027color: red;\u0027\u003e**INVALID** input, no keyword defined\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":266,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":267,"author":{"gitId":"dloh2236"},"content":"### Modifying Task (`edit`, `update`, `modify`)","lastModifiedDate":"2023-09-24"},{"lineNumber":268,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":269,"author":{"gitId":"dloh2236"},"content":"#### Edit, Update and Modify Command (same format for all)","lastModifiedDate":"2023-09-24"},{"lineNumber":270,"author":{"gitId":"dloh2236"},"content":"\u003e [!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":271,"author":{"gitId":"dloh2236"},"content":"\u003e They all follow the same syntax and have the same functions, `update`, and `modify` are just aliases for `edit`.","lastModifiedDate":"2023-09-24"},{"lineNumber":272,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":273,"author":{"gitId":"dloh2236"},"content":"Opens editing mode for the task specified by the index. The task specified will appear in the text field for the user to modify. Modified tasks must follow the correct syntax of adding a task.","lastModifiedDate":"2023-09-24"},{"lineNumber":274,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":275,"author":{"gitId":"dloh2236"},"content":"Users can type `C` or `c` to exit editing mode for the task and resume normal mode.","lastModifiedDate":"2023-09-24"},{"lineNumber":276,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":277,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":278,"author":{"gitId":"dloh2236"},"content":"`edit \u003cINDEX\u003e` - opens editing mode on the task specified in the index and puts the task in the text field for the user to edit.","lastModifiedDate":"2023-09-24"},{"lineNumber":279,"author":{"gitId":"dloh2236"},"content":"Users can make the necessary amends and input them to modify the specified task.","lastModifiedDate":"2023-09-24"},{"lineNumber":280,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":281,"author":{"gitId":"dloh2236"},"content":"\u003e [!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":282,"author":{"gitId":"dloh2236"},"content":"\u003e `\u003cINDEX\u003e` refers to the position of the task in the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":283,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":284,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":285,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":286,"author":{"gitId":"dloh2236"},"content":"|:---------:|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":287,"author":{"gitId":"dloh2236"},"content":"| `edit 1` | \u003cspan style \u003d\u0027color: green;\u0027\u003eAssume task 1 is TODO: play with oreo. The command will enter editing mode on task 1 and display \"todo play with oreo\" in the text field for the user to edit\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":288,"author":{"gitId":"dloh2236"},"content":"| `c` / `C` | \u003cspan style \u003d\u0027color: green;\u0027\u003eExits editing mode without editing the task\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":289,"author":{"gitId":"dloh2236"},"content":"| `edit -1` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input of index\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":290,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":291,"author":{"gitId":"dloh2236"},"content":"After entering edit mode, you can modify the task in the text field however you want. The new task will be reflected in","lastModifiedDate":"2023-09-24"},{"lineNumber":292,"author":{"gitId":"dloh2236"},"content":"the same position in the list as the old task.","lastModifiedDate":"2023-09-24"},{"lineNumber":293,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":294,"author":{"gitId":"dloh2236"},"content":"\u003e [!IMPORTANT]","lastModifiedDate":"2023-09-24"},{"lineNumber":295,"author":{"gitId":"dloh2236"},"content":"\u003e After entering editing mode, you will realise a change in GUI to reflect the change in mode. As such, only adding task","lastModifiedDate":"2023-09-24"},{"lineNumber":296,"author":{"gitId":"dloh2236"},"content":"\u003e commands and `c` will do anything. Any other command will prompt the user to edit the previously selected task. To","lastModifiedDate":"2023-09-24"},{"lineNumber":297,"author":{"gitId":"dloh2236"},"content":"\u003e exit, type `c`.","lastModifiedDate":"2023-09-24"},{"lineNumber":298,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":299,"author":{"gitId":"dloh2236"},"content":"### Marking and Unmarking Task (`mark`, `unmark`)","lastModifiedDate":"2023-09-24"},{"lineNumber":300,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":301,"author":{"gitId":"dloh2236"},"content":"#### Mark Command and Unmark Command","lastModifiedDate":"2023-09-24"},{"lineNumber":302,"author":{"gitId":"dloh2236"},"content":"\u003e [!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":303,"author":{"gitId":"dloh2236"},"content":"\u003e Both commands follow the same syntax. The only difference is they do the opposite of the other.","lastModifiedDate":"2023-09-24"},{"lineNumber":304,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":305,"author":{"gitId":"dloh2236"},"content":"**Mark:** Marks the task at the index specified as complete, or lets the user know that it is already marked complete.","lastModifiedDate":"2023-09-24"},{"lineNumber":306,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":307,"author":{"gitId":"dloh2236"},"content":"**Unmark:** Unmarks the task at the index specified as incomplete, or let the user know that it is still incomplete.","lastModifiedDate":"2023-09-24"},{"lineNumber":308,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":309,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":310,"author":{"gitId":"dloh2236"},"content":"`mark \u003cINDEX\u003e`/`unmark \u003cINDEX\u003e` - task at index becomes/stays complete (incomplete for unmark).","lastModifiedDate":"2023-09-24"},{"lineNumber":311,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":312,"author":{"gitId":"dloh2236"},"content":"\u003e [!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":313,"author":{"gitId":"dloh2236"},"content":"\u003e \u003cINDEX\u003e refers to the position of the task in the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":314,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":315,"author":{"gitId":"dloh2236"},"content":"###### Example Usage (_shown only for mark_):","lastModifiedDate":"2023-09-24"},{"lineNumber":316,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":317,"author":{"gitId":"dloh2236"},"content":"|:---------:|-----------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":318,"author":{"gitId":"dloh2236"},"content":"| `mark 1` | \u003cspan style \u003d\u0027color: green;\u0027\u003eAssuming task at position 1 on list is currently incomplete, it will be marked complete\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":319,"author":{"gitId":"dloh2236"},"content":"| `mark 2` | \u003cspan style \u003d\u0027color: green;\u0027\u003eAssuming task at position 2 on list is currently complete, it will remain complete\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":320,"author":{"gitId":"dloh2236"},"content":"| `mark -1` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input of index\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":321,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":322,"author":{"gitId":"dloh2236"},"content":"## Additional Features","lastModifiedDate":"2023-09-24"},{"lineNumber":323,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":324,"author":{"gitId":"dloh2236"},"content":"### Saving Tasks (`save`)","lastModifiedDate":"2023-09-24"},{"lineNumber":325,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":326,"author":{"gitId":"dloh2236"},"content":"#### Save Command","lastModifiedDate":"2023-09-24"},{"lineNumber":327,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":328,"author":{"gitId":"dloh2236"},"content":"Saves all tasks as of current state to file while the app continues to run.","lastModifiedDate":"2023-09-24"},{"lineNumber":329,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":330,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":331,"author":{"gitId":"dloh2236"},"content":"`save` - saves the current list of tasks to file.","lastModifiedDate":"2023-09-24"},{"lineNumber":332,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":333,"author":{"gitId":"dloh2236"},"content":"\u003e [!IMPORTANT]","lastModifiedDate":"2023-09-24"},{"lineNumber":334,"author":{"gitId":"dloh2236"},"content":"\u003e Task will only save upon the `bye` command or `save` command. Please save your task list regularly to avoid losing it.","lastModifiedDate":"2023-09-24"},{"lineNumber":335,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":336,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":337,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":338,"author":{"gitId":"dloh2236"},"content":"|:-------:|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":339,"author":{"gitId":"dloh2236"},"content":"| `save` | \u003cspan style \u003d\u0027color: green;\u0027\u003eSaves current list of task to file\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":340,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":341,"author":{"gitId":"dloh2236"},"content":"\u003e[!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":342,"author":{"gitId":"dloh2236"},"content":"\u003e`save` ignores any other input after the command.","lastModifiedDate":"2023-09-24"},{"lineNumber":343,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":344,"author":{"gitId":"dloh2236"},"content":"### Exiting the Application (`bye`)","lastModifiedDate":"2023-09-24"},{"lineNumber":345,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":346,"author":{"gitId":"dloh2236"},"content":"#### Bye Command","lastModifiedDate":"2023-09-24"},{"lineNumber":347,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":348,"author":{"gitId":"dloh2236"},"content":"Closes the application and saves all tasks the user has inputted.","lastModifiedDate":"2023-09-24"},{"lineNumber":349,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":350,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":351,"author":{"gitId":"dloh2236"},"content":"`bye` - closes the application and saves all tasks.","lastModifiedDate":"2023-09-24"},{"lineNumber":352,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":353,"author":{"gitId":"dloh2236"},"content":"\u003e [!IMPORTANT]","lastModifiedDate":"2023-09-24"},{"lineNumber":354,"author":{"gitId":"dloh2236"},"content":"\u003e Task will only save upon the `bye` command or `save` command. Please save your task list regularly to avoid losing your","lastModifiedDate":"2023-09-24"},{"lineNumber":355,"author":{"gitId":"dloh2236"},"content":"\u003e task list.","lastModifiedDate":"2023-09-24"},{"lineNumber":356,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":357,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":358,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":359,"author":{"gitId":"dloh2236"},"content":"|:-------:|----------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":360,"author":{"gitId":"dloh2236"},"content":"| `bye` | \u003cspan style \u003d\u0027color: green;\u0027\u003eCloses application and saves all tasks user has inputted\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":361,"author":{"gitId":"dloh2236"},"content":"| `bye!` | \u003cspan style \u003d\u0027color: red;\u0027\u003eInvalid character appended to `bye`\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":362,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":363,"author":{"gitId":"dloh2236"},"content":"\u003e[!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":364,"author":{"gitId":"dloh2236"},"content":"\u003e`bye` ignores any other input after the command. However, appending any characters to bye will be invalid and an","lastModifiedDate":"2023-09-24"},{"lineNumber":365,"author":{"gitId":"dloh2236"},"content":"\u003e unrecognised command.","lastModifiedDate":"2023-09-24"},{"lineNumber":366,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":367,"author":{"gitId":"dloh2236"},"content":"### Miscellaneous","lastModifiedDate":"2023-09-24"},{"lineNumber":368,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":369,"author":{"gitId":"dloh2236"},"content":"#### `Hello` / `hi`","lastModifiedDate":"2023-09-24"},{"lineNumber":370,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":371,"author":{"gitId":"dloh2236"},"content":"This input is not a command! Rather we have recognised that first-time users are likely to type this input when they","lastModifiedDate":"2023-09-24"},{"lineNumber":372,"author":{"gitId":"dloh2236"},"content":"first start using the app. Hence, greeting Oreo prompts her to greet you back and offer assistance. ","lastModifiedDate":"2023-09-24"},{"lineNumber":373,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":374,"author":{"gitId":"dloh2236"},"content":"Do say hello to Oreo!","lastModifiedDate":"2023-09-24"},{"lineNumber":375,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":376,"author":{"gitId":"dloh2236"},"content":"#### Other features","lastModifiedDate":"2023-09-24"},{"lineNumber":377,"author":{"gitId":"dloh2236"},"content":"There are some hidden features in Oreo that we won\u0027t tell you! Play around with her a while more to find these hidden","lastModifiedDate":"2023-09-24"},{"lineNumber":378,"author":{"gitId":"dloh2236"},"content":"easter eggs we have planted in the app! ","lastModifiedDate":"2023-09-24"},{"lineNumber":379,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":380,"author":{"gitId":"dloh2236"},"content":"## Date Time Formats","lastModifiedDate":"2023-09-24"},{"lineNumber":381,"author":{"gitId":"dloh2236"},"content":"One of the features of Oreo is the extensive date time formats it accepts. However, due to the wide variety of date time","lastModifiedDate":"2023-09-24"},{"lineNumber":382,"author":{"gitId":"dloh2236"},"content":"formats and combinations that Oreo accepts, there are certain rules that need to be followed. This is to ensure the date","lastModifiedDate":"2023-09-24"},{"lineNumber":383,"author":{"gitId":"dloh2236"},"content":"time is recorded properly and for the users to input their desired date time easily.","lastModifiedDate":"2023-09-24"},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":385,"author":{"gitId":"dloh2236"},"content":"###### Accepted Date Formats:","lastModifiedDate":"2023-09-24"},{"lineNumber":386,"author":{"gitId":"dloh2236"},"content":"| Format | Examples | Remarks |","lastModifiedDate":"2023-09-24"},{"lineNumber":387,"author":{"gitId":"dloh2236"},"content":"|:------------:|----------------------------|--------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":388,"author":{"gitId":"dloh2236"},"content":"| `d/M/yyyy` | `1/1/2023`, `01/12/2023` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":389,"author":{"gitId":"dloh2236"},"content":"| `d-M-yyyy` | `1-1-2023`, `01-12-2023` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":390,"author":{"gitId":"dloh2236"},"content":"| `d/M/yy` | `1/1/23`, `01/12/12` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":391,"author":{"gitId":"dloh2236"},"content":"| `d-M-yy` | `1-1-23`, `01-12-12` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":392,"author":{"gitId":"dloh2236"},"content":"| `MMM d yyyy` | `Jan 1 2023`, `jan 1 2023` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":393,"author":{"gitId":"dloh2236"},"content":"| `MMM d yy` | `Jan 1 23`, `jan 1 23` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":394,"author":{"gitId":"dloh2236"},"content":"| `d MMM yyyy` | `1 Jan 2023`, `1 jan 2023` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":395,"author":{"gitId":"dloh2236"},"content":"| `d MMM yy` | `Jan 1 2023`, `1 jan 23` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":396,"author":{"gitId":"dloh2236"},"content":"| `yyyy/M/d` | `2023/1/1`, `2023/12/01` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":397,"author":{"gitId":"dloh2236"},"content":"| `yy/M/d` | `23/1/1`, `23/12/01` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":398,"author":{"gitId":"dloh2236"},"content":"| `yyyy-M-d` | `2023-1-1`, `2023-12-01` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":399,"author":{"gitId":"dloh2236"},"content":"| `yy-M-d` | `23-1-1`, `23-12-01` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":400,"author":{"gitId":"dloh2236"},"content":"| `d/M` | `1/1`, `01/12` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":401,"author":{"gitId":"dloh2236"},"content":"| `d-M` | `1-1`, `01-12` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":402,"author":{"gitId":"dloh2236"},"content":"| `MMM d` | `Jan 1`, `jan 1` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":403,"author":{"gitId":"dloh2236"},"content":"| `d MMM` | `1 Jan`, `jan 1` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":405,"author":{"gitId":"dloh2236"},"content":"###### Accepted Time Formats:","lastModifiedDate":"2023-09-24"},{"lineNumber":406,"author":{"gitId":"dloh2236"},"content":"| Format | Examples | Remarks |","lastModifiedDate":"2023-09-24"},{"lineNumber":407,"author":{"gitId":"dloh2236"},"content":"|:--------:|----------------------|--------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":408,"author":{"gitId":"dloh2236"},"content":"| `HHmm` | `1800`, `0600` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":409,"author":{"gitId":"dloh2236"},"content":"| `h a` | `6 pm`, `6 PM` | Might not work on some systems |","lastModifiedDate":"2023-09-24"},{"lineNumber":410,"author":{"gitId":"dloh2236"},"content":"| `ha` | `6pm`, `6PM` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":411,"author":{"gitId":"dloh2236"},"content":"| `HH:mm` | `18:00`, `06:00` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":412,"author":{"gitId":"dloh2236"},"content":"| `h:mm a` | `6:00 PM`, `6:00 am` | Not case sensitive,\u003cbr/\u003eMight not work on some systems |","lastModifiedDate":"2023-09-24"},{"lineNumber":413,"author":{"gitId":"dloh2236"},"content":"| `h:mma` | `6:00pm`, `6:00AM` | Not case sensitive,\u003cbr/\u003eMight not work on some systems |","lastModifiedDate":"2023-09-24"},{"lineNumber":414,"author":{"gitId":"dloh2236"},"content":"| `HH.mm` | `18.00`, `06.00` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":415,"author":{"gitId":"dloh2236"},"content":"| `h.mm a` | `6.00 pm`, `6.00 AM` | Not case sensitive,\u003cbr/\u003eMight not work on some systems |","lastModifiedDate":"2023-09-24"},{"lineNumber":416,"author":{"gitId":"dloh2236"},"content":"| `h.mma` | `6.00PM`, `6.00am` | Not case sensitive,\u003cbr/\u003eMight not work on some systems |","lastModifiedDate":"2023-09-24"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":418,"author":{"gitId":"dloh2236"},"content":"###### Using Date and Time Together:","lastModifiedDate":"2023-09-24"},{"lineNumber":419,"author":{"gitId":"dloh2236"},"content":"When using date and time together, you must separate the date and time with `,\u003cspace\u003e`.","lastModifiedDate":"2023-09-24"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":421,"author":{"gitId":"dloh2236"},"content":":white_check_mark: **A GOOD EXAMPLE**","lastModifiedDate":"2023-09-24"},{"lineNumber":422,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":423,"author":{"gitId":"dloh2236"},"content":"1 Jan 2023, 6pm","lastModifiedDate":"2023-09-24"},{"lineNumber":424,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":425,"author":{"gitId":"dloh2236"},"content":"You may use any combination of date and time formats when doing this, even within the same command.","lastModifiedDate":"2023-09-24"},{"lineNumber":426,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":427,"author":{"gitId":"dloh2236"},"content":"event playtime /from 1 jan, 1800 /to 03/1, 10pm // is valid as well","lastModifiedDate":"2023-09-24"},{"lineNumber":428,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":429,"author":{"gitId":"dloh2236"},"content":"However, the purpose of accepting such varied date time formats is not for this use but to cater to varied","lastModifiedDate":"2023-09-24"},{"lineNumber":430,"author":{"gitId":"dloh2236"},"content":"preference of date time formats. ","lastModifiedDate":"2023-09-24"},{"lineNumber":431,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":432,"author":{"gitId":"dloh2236"},"content":":x: **BAD EXAMPLES**","lastModifiedDate":"2023-09-24"},{"lineNumber":433,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":434,"author":{"gitId":"dloh2236"},"content":"1 /0 1/2023, 43pm // not valid date and time, unecessary whitespaces","lastModifiedDate":"2023-09-24"},{"lineNumber":435,"author":{"gitId":"dloh2236"},"content":"1 Jan 2023 6pm // valid date and time but missing comma","lastModifiedDate":"2023-09-24"},{"lineNumber":436,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":437,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":438,"author":{"gitId":"dloh2236"},"content":"##### Date Time Assumptions","lastModifiedDate":"2023-09-24"},{"lineNumber":439,"author":{"gitId":"dloh2236"},"content":"Oreo allows input of date-only and time-only commands when adding deadlines and events. Data inputs may or may not include a year. As such, there are certain underlying assumptions that Oreo will make based on the entered-in date time. Understanding this would enable you to use the date time expansive date time format effectively.","lastModifiedDate":"2023-09-24"},{"lineNumber":440,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":441,"author":{"gitId":"dloh2236"},"content":"##### Time-Only Inputs","lastModifiedDate":"2023-09-24"},{"lineNumber":442,"author":{"gitId":"dloh2236"},"content":"Oreo will set the date of the task to the next occurrence of the input time. We have implemented it in such as way because","lastModifiedDate":"2023-09-24"},{"lineNumber":443,"author":{"gitId":"dloh2236"},"content":"Oreo is a chatbot that keeps track of future tasks for you. Hence, an input without a date would assume that you are","lastModifiedDate":"2023-09-24"},{"lineNumber":444,"author":{"gitId":"dloh2236"},"content":"adding the task for the future.","lastModifiedDate":"2023-09-24"},{"lineNumber":445,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":446,"author":{"gitId":"dloh2236"},"content":"\u003cdl\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":447,"author":{"gitId":"dloh2236"},"content":" \u003cdt\u003eFor example:\u003c/dt\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":448,"author":{"gitId":"dloh2236"},"content":" \u003cdd\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":449,"author":{"gitId":"dloh2236"},"content":" ","lastModifiedDate":"2023-09-24"},{"lineNumber":450,"author":{"gitId":"dloh2236"},"content":"**Assume the date and time now is 1st January 2023, 12pm.**","lastModifiedDate":"2023-09-24"},{"lineNumber":451,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":452,"author":{"gitId":"dloh2236"},"content":"`deadline give oreo breakfast /by 9am`: deadline will be set for 2nd January 2023, 9am.","lastModifiedDate":"2023-09-24"},{"lineNumber":453,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":454,"author":{"gitId":"dloh2236"},"content":"`deadline give oreo dinner /by 6pm`: deadline will be set for 1st January 2023, 6pm.","lastModifiedDate":"2023-09-24"},{"lineNumber":455,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":456,"author":{"gitId":"dloh2236"},"content":"\u003c/dl\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":457,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":458,"author":{"gitId":"dloh2236"},"content":"\u003e [!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":459,"author":{"gitId":"dloh2236"},"content":"\u003e There is a **special** case for **event** tasks!","lastModifiedDate":"2023-09-24"},{"lineNumber":460,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":461,"author":{"gitId":"dloh2236"},"content":"**Assume the date and time now is 1st January 2023, 12pm.**","lastModifiedDate":"2023-09-24"},{"lineNumber":462,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":463,"author":{"gitId":"dloh2236"},"content":"\u003cdl\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":464,"author":{"gitId":"dloh2236"},"content":" \u003cdt\u003eCase 1: \u003c/dt\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":465,"author":{"gitId":"dloh2236"},"content":" \u003cdd\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":466,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":467,"author":{"gitId":"dloh2236"},"content":"**_from `time` to `time` inputs (Reference `/to` time - next occurrence of `/to` time)_**","lastModifiedDate":"2023-09-25"},{"lineNumber":468,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":469,"author":{"gitId":"dloh2236"},"content":"`event playtime /from 11am /to 3pm`: event will be set for 1st January 2023, 11-3pm","lastModifiedDate":"2023-09-25"},{"lineNumber":470,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":471,"author":{"gitId":"dloh2236"},"content":"`event bathe /from 9am /to 9:30am`: event will be set for 2nd January 2023, 11-3pm","lastModifiedDate":"2023-09-25"},{"lineNumber":472,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":473,"author":{"gitId":"dloh2236"},"content":" \u003c/dd\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":474,"author":{"gitId":"dloh2236"},"content":" \u003cdt\u003eCase 2: \u003c/dt\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":475,"author":{"gitId":"dloh2236"},"content":" \u003cdd\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":476,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":477,"author":{"gitId":"dloh2236"},"content":"**_from `date` `time` to `time` (Reference `/from` date)_**","lastModifiedDate":"2023-09-25"},{"lineNumber":478,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":479,"author":{"gitId":"dloh2236"},"content":"`event playtime /from 1 Jan, 11am /to 3pm`: event will be set for 1st January 2023, 11-3pm","lastModifiedDate":"2023-09-24"},{"lineNumber":480,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":481,"author":{"gitId":"dloh2236"},"content":" \u003c/dd\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":482,"author":{"gitId":"dloh2236"},"content":" \u003cdt\u003eCase 3: \u003c/dt\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":483,"author":{"gitId":"dloh2236"},"content":" \u003cdd\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":484,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":485,"author":{"gitId":"dloh2236"},"content":"**_from `time` to `date` `time` (Reference `/from` time)_**","lastModifiedDate":"2023-09-25"},{"lineNumber":486,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":487,"author":{"gitId":"dloh2236"},"content":"`event oreo\u0027s special days /from 9am /to 31 Dec, 11:59pm`: event will be set for 2nd Jan 2023, 9am to 31st Dec 11:59pm","lastModifiedDate":"2023-09-24"},{"lineNumber":488,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":489,"author":{"gitId":"dloh2236"},"content":" \u003c/dd\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":490,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":491,"author":{"gitId":"dloh2236"},"content":"\u003c/dl\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":492,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":493,"author":{"gitId":"dloh2236"},"content":"For more information about event date time formats, see [Using Date and Time in Events](#using-date-and-time-in-events).","lastModifiedDate":"2023-09-24"},{"lineNumber":494,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":495,"author":{"gitId":"dloh2236"},"content":"##### Date-Only Inputs","lastModifiedDate":"2023-09-24"},{"lineNumber":496,"author":{"gitId":"dloh2236"},"content":"In this case, Oreo will assume these are whole-day tasks and will not set a time for these tasks hence, only the date is","lastModifiedDate":"2023-09-24"},{"lineNumber":497,"author":{"gitId":"dloh2236"},"content":"saved.","lastModifiedDate":"2023-09-24"},{"lineNumber":498,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":499,"author":{"gitId":"dloh2236"},"content":"##### Date Without Year Inputs","lastModifiedDate":"2023-09-24"},{"lineNumber":500,"author":{"gitId":"dloh2236"},"content":"This is where things get tricky! Similar to time-only inputs, Oreo will set the year of the date to the next occurrence","lastModifiedDate":"2023-09-24"},{"lineNumber":501,"author":{"gitId":"dloh2236"},"content":"of the date or next occurrence of the date specified in `/to` for events.","lastModifiedDate":"2023-09-24"},{"lineNumber":502,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":503,"author":{"gitId":"dloh2236"},"content":"**Assume the date and time now is 1st January 2023, 12pm.**","lastModifiedDate":"2023-09-24"},{"lineNumber":504,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":505,"author":{"gitId":"dloh2236"},"content":"\u003cdl\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":506,"author":{"gitId":"dloh2236"},"content":" \u003cdt\u003eFor example:\u003c/dt\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":507,"author":{"gitId":"dloh2236"},"content":" \u003cdd\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":508,"author":{"gitId":"dloh2236"},"content":" ","lastModifiedDate":"2023-09-24"},{"lineNumber":509,"author":{"gitId":"dloh2236"},"content":"**Assume the date is 1st January 2023.**","lastModifiedDate":"2023-09-24"},{"lineNumber":510,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":511,"author":{"gitId":"dloh2236"},"content":"`deadline new years\u0027 eve /by 31 Dec`: deadline will be set for 31st December 2024.","lastModifiedDate":"2023-09-24"},{"lineNumber":512,"author":{"gitId":"dloh2236"},"content":" ","lastModifiedDate":"2023-09-24"},{"lineNumber":513,"author":{"gitId":"dloh2236"},"content":"`event christmas /from 25 Dec /to 5 Jan`: the event will be set for 25th December 2022 to 5th January 2023.","lastModifiedDate":"2023-09-24"},{"lineNumber":514,"author":{"gitId":"dloh2236"},"content":" ","lastModifiedDate":"2023-09-24"},{"lineNumber":515,"author":{"gitId":"dloh2236"},"content":"`event playtime /from 9am /to 1st Jan, 5pm`: INVALID! As 9am will be read independently and be assumed to be on","lastModifiedDate":"2023-09-24"},{"lineNumber":516,"author":{"gitId":"dloh2236"},"content":" 2nd January.","lastModifiedDate":"2023-09-24"},{"lineNumber":517,"author":{"gitId":"dloh2236"},"content":" \u003c/dd\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":518,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":519,"author":{"gitId":"dloh2236"},"content":"\u003c/dl\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":520,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":521,"author":{"gitId":"dloh2236"},"content":"##### Using Date and Time in Events","lastModifiedDate":"2023-09-24"},{"lineNumber":522,"author":{"gitId":"dloh2236"},"content":"You should have realised that date time for events can be quite tricky due to the permutations of date time that are","lastModifiedDate":"2023-09-24"},{"lineNumber":523,"author":{"gitId":"dloh2236"},"content":"possible. There are **9** to be exact. Due to this, we have to limit these permutations that make sense. Otherwise, Oreo would be confused","lastModifiedDate":"2023-09-24"},{"lineNumber":524,"author":{"gitId":"dloh2236"},"content":"as to what date and time to set. ","lastModifiedDate":"2023-09-24"},{"lineNumber":525,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":526,"author":{"gitId":"dloh2236"},"content":"You can read [here](#event-datetime-combinations-accepted) to see the combinations and learn more about the event task","lastModifiedDate":"2023-09-24"},{"lineNumber":527,"author":{"gitId":"dloh2236"},"content":"or you can see it below:","lastModifiedDate":"2023-09-24"},{"lineNumber":528,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":529,"author":{"gitId":"dloh2236"},"content":"| `/from` | `/to` |","lastModifiedDate":"2023-09-24"},{"lineNumber":530,"author":{"gitId":"dloh2236"},"content":"|:--------------:|:------------:|","lastModifiedDate":"2023-09-24"},{"lineNumber":531,"author":{"gitId":"dloh2236"},"content":"| `date, time` | `date, time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":532,"author":{"gitId":"dloh2236"},"content":"| `date, time` | `time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":533,"author":{"gitId":"dloh2236"},"content":"| `date` | `date` |","lastModifiedDate":"2023-09-24"},{"lineNumber":534,"author":{"gitId":"dloh2236"},"content":"| `time` | `time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":535,"author":{"gitId":"dloh2236"},"content":"| `time` | `date, time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":537,"author":{"gitId":"dloh2236"},"content":"If this is too confusing, just do what makes sense!","lastModifiedDate":"2023-09-24"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":539,"author":{"gitId":"dloh2236"},"content":"**General Rules**:","lastModifiedDate":"2023-09-24"},{"lineNumber":540,"author":{"gitId":"dloh2236"},"content":"1. If `/from` or `/to` have a time, both **must** have a time.","lastModifiedDate":"2023-09-24"},{"lineNumber":541,"author":{"gitId":"dloh2236"},"content":"1. `/to` **must** be after `/from`.","lastModifiedDate":"2023-09-24"},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":543,"author":{"gitId":"dloh2236"},"content":"**Easy Formatting:**","lastModifiedDate":"2023-09-24"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":545,"author":{"gitId":"dloh2236"},"content":"For ease of inputting date time for same-day events. We have negated the requirement of requiring a date in `/to` if a","lastModifiedDate":"2023-09-24"},{"lineNumber":546,"author":{"gitId":"dloh2236"},"content":"date is specified in `/from`. Oreo will take the date specified in `/from` and apply it to the date time in \u0027/to\u0027. We did this as we would usually present events as such: *Dinner on 1st January, 6 - 8pm*.","lastModifiedDate":"2023-09-24"},{"lineNumber":547,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":548,"author":{"gitId":"dloh2236"},"content":"Example of how it looks like when adding such an event:","lastModifiedDate":"2023-09-24"},{"lineNumber":549,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":550,"author":{"gitId":"dloh2236"},"content":"event Dinner /from 1 Jan, 6pm /to 8pm","lastModifiedDate":"2023-09-24"},{"lineNumber":551,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":552,"author":{"gitId":"dloh2236"},"content":"This also helps reduce the redundancy of commands.","lastModifiedDate":"2023-09-24"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":554,"author":{"gitId":"dloh2236"},"content":"\u003e [!NOTE]","lastModifiedDate":"2023-09-24"},{"lineNumber":555,"author":{"gitId":"dloh2236"},"content":"\u003e #### Additional Notes:","lastModifiedDate":"2023-09-24"},{"lineNumber":556,"author":{"gitId":"dloh2236"},"content":"\u003e- Only date input will not include a time saved in the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":557,"author":{"gitId":"dloh2236"},"content":"\u003e- Only time input will set a date with reference to the `/to` time and give the next occurrence of that duration.","lastModifiedDate":"2023-09-24"},{"lineNumber":558,"author":{"gitId":"dloh2236"},"content":"\u003e- For `time` to `date, time` input, the inferred date for `/from` will be the next occurrence of that time instead of ","lastModifiedDate":"2023-09-24"},{"lineNumber":559,"author":{"gitId":"dloh2236"},"content":"\u003ereferencing the `/to` time.","lastModifiedDate":"2023-09-24"}],"authorContributionMap":{"dloh2236":534,"-":25}},{"path":"src/main/java/oreo/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"public class Launcher {","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":13}},{"path":"src/main/java/oreo/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-23"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.paint.Paint;","lastModifiedDate":"2023-09-23"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.MainWindow;","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" scene.getStylesheets().add(getClass().getResource(\"/styles.css\").toExternalForm());","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" MainWindow gui \u003d fxmlLoader.getController();","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" Oreo oreo \u003d new Oreo(\"./oreo.txt\",","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" gui);","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" stage.setTitle(\"Oreo\");","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" stage.getIcons().add(new Image(\"/images/icon.png\"));","lastModifiedDate":"2023-09-23"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" stage.setMinHeight(700);","lastModifiedDate":"2023-09-23"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" stage.setMinWidth(500);","lastModifiedDate":"2023-09-23"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" stage.setMaxWidth(500);","lastModifiedDate":"2023-09-23"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" stage.show();","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":40}},{"path":"src/main/java/oreo/Oreo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.command.EditCommand;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.command.Command;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import oreo.storage.Storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.MainWindow;","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * This class implements the chatbot Oreo.","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"public class Oreo {","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" /** The GUI of the application */","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" private MainWindow ui;","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" /** Storage class that handles read write to files */","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" private Storage storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" /** Stores all tasks that are inputted */","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" /** Cache for Oreo to store data when transiting between scenes */","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" private ArrayList\u003cObject\u003e cache;","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" * Constructor of Oreo chatbot.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" * @param filePath file path to where saved file is and where saved","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" * task will be written to file for next start up","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" * of chatbot.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" public Oreo(String filePath, MainWindow gui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" this.ui \u003d gui;","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" gui.setOreo(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" this.cache \u003d new ArrayList();","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" gui.startUp();","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" * Handles the start-up process of oreo.","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException If user inputs a command that is not accepted.","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" * @throws FileNotFoundException If filepath cannot be found.","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" public void startUp() throws FileNotFoundException, IllegalDateTimeException {","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" storage.readFile(tasks); // reads loaded file","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" * Clears saved tasks and stored files if stored file is corrupt and unreadable.","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" public void clearTaskAndFile() {","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" storage.clearFile();","lastModifiedDate":"2023-09-07"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" tasks.clearAll();","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" * Generates greeting message for user.","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" * @return greet message.","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" public String greet() {","lastModifiedDate":"2023-09-07"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" String greetMessage \u003d \"Woof! I\u0027m Oreo! How may I help you?\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" if (tasks.getNumberOfTask() !\u003d 0) {","lastModifiedDate":"2023-09-07"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" return greetMessage","lastModifiedDate":"2023-09-07"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" + \"Welcome back! \"","lastModifiedDate":"2023-09-07"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" + tasks.list();","lastModifiedDate":"2023-09-07"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-07"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" return greetMessage;","lastModifiedDate":"2023-09-07"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" * Returns the bye message to user.","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" * @return bye message.","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" public String sayBye() {","lastModifiedDate":"2023-09-07"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" return \"I will be sad to see you go! bye!\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" * Executes given command.","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" * @param command command to be executed.","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" * @return String response from executed command.","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" public String execute(Command command) {","lastModifiedDate":"2023-09-07"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":" return command.execute(tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" * Executes command in Edit Mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" * @param command command to be executed.","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" * @return String response from executed command.","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException wrong date time input format.","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(Command command) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-18"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" String input \u003d (String) getCache(0); // gets the cached input from user","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":" Task oldTask \u003d (Task) getCache(1); // get the cached task to edit","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":" int id \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2023-09-18"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":" return command.executeEditMode(tasks, id - 1, oldTask);","lastModifiedDate":"2023-09-18"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":" * Gets task upon edit command input.","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":" * @param editCommand","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":" * @return Task specified by edit command.","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":" public Task getTask(EditCommand editCommand) {","lastModifiedDate":"2023-09-18"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":" return editCommand.getEditTask();","lastModifiedDate":"2023-09-18"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":" * Cache an Object to an ArrayList.","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":" * @param toCache object to cache.","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":" public void cache(Object toCache) {","lastModifiedDate":"2023-09-18"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":" cache.add(toCache);","lastModifiedDate":"2023-09-18"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":" * Gets cached object at specified index.","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":" * @param index of ArrayList.","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":" * @return Object stored in cache.","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":" public Object getCache(int index) {","lastModifiedDate":"2023-09-18"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":" return cache.get(index);","lastModifiedDate":"2023-09-18"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":" * Clears the cache.","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":" public void clearCache() {","lastModifiedDate":"2023-09-18"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":" cache.clear();","lastModifiedDate":"2023-09-18"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":" * Runs closing process of application.","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":" * @throws IOException","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":" public void closeProcess() throws IOException {","lastModifiedDate":"2023-09-07"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":" storage.writeFile(tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"dloh2236":164,"-":1}},{"path":"src/main/java/oreo/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.Formatter;","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" private String command;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * Constructor for AddCommand.","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * @param command todo, deadline or event.","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * @param tokeniser rest of user input.","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public AddCommand(String command, Scanner tokeniser) {","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) throws IllegalCommandException,","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" Task newTask \u003d Task.generateTask(command, tokeniser);","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" tasks.modifyTask(index, newTask);","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" return \"Modified this: \\n\"","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(oldTask.toString(), 2)","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" + \"to this: \\n\"","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(newTask.toString(), 2);","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" Task newTask \u003d Task.generateTask(command, tokeniser);","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" return \"Gotchu! noted down: \\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(newTask.toString(), 2)","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" + \"Now you have \" + tasks.getNumberOfTask()","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" + \" tasks in the list!\";","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":58}},{"path":"src/main/java/oreo/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" return \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":24}},{"path":"src/main/java/oreo/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" * Implements abstract command class, parent class of specific commands","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * Executes the command.","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * @param tasks Tasklist of the chatbot.","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * @return Response from executing command on tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public abstract String execute(TaskList tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" * Executes the command while in edit mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" * @param tasks task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" * @param index index of relevant task in edit mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" * @param oldTask old task of edit mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * @return Response from executing command on tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException Invalid date time formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" public abstract String executeEditMode(TaskList tasks, int index, Task oldTask)","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" throws IllegalDateTimeException;","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" * Checks if command is bye.","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" * @return true if command is ByeCommand.","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" return this instanceof ByeCommand;","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" * Checks if command is edit.","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" * @return true if command is EditCommand.","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" public boolean isEdit() {","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" return this instanceof EditCommand;","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" * Checks if command is ExitMode.","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" * @return true if command is ExitModeCommand.","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" public boolean isExitMode() {","lastModifiedDate":"2023-09-18"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" return this instanceof ExitModeCommand;","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" * Utility method to check if str is an integer input for commands that","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" * take in index input.","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" * @param str input","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" * @return true if integer, false if not","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" public boolean isInteger(String str) {","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" if (str \u003d\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" int length \u003d str.length();","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" if (length \u003d\u003d 0) {","lastModifiedDate":"2023-09-21"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" int i \u003d 0;","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" if (str.charAt(0) \u003d\u003d \u0027-\u0027) {","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" if (length \u003d\u003d 1) {","lastModifiedDate":"2023-09-21"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" i \u003d 1;","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" for (; i \u003c length; i++) {","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" char c \u003d str.charAt(i);","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" if (c \u003c \u00270\u0027 || c \u003e \u00279\u0027) {","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" return true;","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":92}},{"path":"src/main/java/oreo/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.Formatter;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" private String command;","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * Constructor for Delete Command.","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @param command command","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * @param tokeniser rest of command","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public DeleteCommand(String command, Scanner tokeniser) {","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" * Acts on tasks with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" * @param tasks task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * @return Response upon acting on task with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException invalid command formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" public String actOn(TaskList tasks) throws IllegalCommandException {","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" if (command.equals(\"clear\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" tasks.clearAll();","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" return \"Cleared all your task for you! Play time?\";","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" // nothing specified after command","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that without specifying a task number\");","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" // specified content is not an integer","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" String content \u003d tokeniser.next();","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" if (!isInteger(content)) {","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" if (content.equals(\"all\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" tasks.clearAll();","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" return \"Cleared all your task for you! Play time?\";","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... try a number instead\");","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" // if number of task does not exist","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" int id \u003d Integer.parseInt(content);","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" if (id \u003e tasks.getNumberOfTask() || id \u003c\u003d 0) {","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... this task does not exist :(\");","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" Task removedTask \u003d tasks.remove(id - 1);","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" assert removedTask !\u003d null: \"removed task must exist\";","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" String message \u003d \"Happily scratched this off your list:\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(removedTask.toString(), 2) + \"Now you have \"","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" + tasks.getNumberOfTask() + \" tasks in the list!\";","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" if (tasks.isAllComplete()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" message +\u003d tasks.list();","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" return message;","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" return actOn(tasks);","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":85}},{"path":"src/main/java/oreo/command/EditCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-18"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-18"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.Formatter;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2023-09-18"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" private String command;","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" private Task taskToEdit;","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" public EditCommand(String command, Scanner tokeniser) {","lastModifiedDate":"2023-09-18"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" public EditCommand() {","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" * Gets task to edit.","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * @return Task to edit.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" public Task getEditTask() {","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" return taskToEdit;","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" * Acts on tasks with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" * @param tasks task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" * @return Response upon acting on task with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException invalid command formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" public Task actOn(TaskList tasks) {","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" // nothing specified after command","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that without specifying a task number\");","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" // specified content is not an integer","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" String content \u003d tokeniser.next();","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" if (!isInteger(content)) {","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... try a number instead\");","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" // if number of task does not exist","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" int id \u003d Integer.parseInt(content);","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" if (id \u003e tasks.getNumberOfTask() || id \u003c\u003d 0) {","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... this task does not exist :(\");","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" return tasks.get(id - 1);","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" return \"Seems like you can\u0027t do that edit!\\n\"","lastModifiedDate":"2023-09-18"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" + \"You are currently modifying this task: \\n\"","lastModifiedDate":"2023-09-18"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(oldTask.toString(), 2)","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" + \"Type \\\"C\\\" to cancel\";","lastModifiedDate":"2023-09-18"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) throws IllegalCommandException {","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" this.taskToEdit \u003d actOn(tasks);","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" return \"You are currently modifying this task: \\n\"","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(taskToEdit.toString(), 2)","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" + \"Type \\\"C\\\" to cancel\";","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-18"}],"authorContributionMap":{"dloh2236":81}},{"path":"src/main/java/oreo/command/EmptyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"public class EmptyCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" return \"uhhh what???\";","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":23}},{"path":"src/main/java/oreo/command/ExitModeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-18"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-18"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"public class ExitModeCommand extends Command {","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) throws IllegalCommandException {","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" return \"I guess not! What else can I help you with?\";","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-18"}],"authorContributionMap":{"dloh2236":24}},{"path":"src/main/java/oreo/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" * Constructor for FindCommand","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * @param tokeniser rest of the user input","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" public FindCommand(Scanner tokeniser) {","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" * Acts on tasks with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" * @param tasks task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" * @return Response upon acting on task with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException invalid command formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" public String actOn(TaskList tasks) throws IllegalCommandException{","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that without specifying a keyword\");","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" String keyword \u003d tokeniser.next();","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" TaskList toPrint \u003d new TaskList();","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c tasks.getNumberOfTask(); i++) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" Task ref \u003d tasks.get(i);","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" if (ref.contains(keyword)) {","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" toPrint.add(ref);","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" return toPrint.listResults(keyword);","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" return actOn(tasks);","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"dloh2236":62}},{"path":"src/main/java/oreo/command/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.io.*;","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" private String command;","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" private final String GENERAL_MESSAGE \u003d getGeneralMessage();","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * Gets general help message from resource folder.","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" * @return general message.","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" private String getGeneralMessage() {","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" try (InputStream in \u003d getClass().getResourceAsStream(\"/help/general.txt\");","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" BufferedReader reader \u003d new BufferedReader(new InputStreamReader(in))) {","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" String line;","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" stringBuilder.append(line).append(\"\\n\");","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" return \"oh no something went wrong\";","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" public HelpCommand(String command, Scanner tokeniser) {","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" * Gets help message from resource folder based on the command input by user.","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" * @param content command user wants to get help for.","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" * @return Help for specified command.","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" public String getHelpMessage(String content) throws IllegalCommandException {","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" try (InputStream in \u003d getClass().getResourceAsStream(\"/help/\" + content + \".txt\");","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" BufferedReader reader \u003d new BufferedReader(new InputStreamReader(in))) {","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" String line;","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" stringBuilder.append(line).append(\"\\n\");","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" } catch (IOException | NullPointerException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"help you with that! That isn\u0027t a valid command. Try \\\"help\\\" to see \"","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" + \"the list of available commands.\");","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" switch (command) {","lastModifiedDate":"2023-09-21"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" case \"help\":","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" return GENERAL_MESSAGE;","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" return \"Hi there! I am Oreo! Seems like you need help!\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" \"type \\\"help\\\" to learn more!\";","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" String content \u003d tokeniser.next();","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" return getHelpMessage(content);","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-21"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-21"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":98}},{"path":"src/main/java/oreo/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-16"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"public class InvalidCommand extends Command{","lastModifiedDate":"2023-09-16"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-16"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) throws IllegalCommandException {","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" return new IllegalCommandException(\"do that, type \\\"help\\\" for help\").getMessage();","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"dloh2236":24}},{"path":"src/main/java/oreo/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" return tasks.list();","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":23}},{"path":"src/main/java/oreo/command/MarkUnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"public class MarkUnmarkCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" private String command;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public MarkUnmarkCommand(String command, Scanner tokeniser) {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * Acts on tasks with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * @param tasks task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" * @return Response upon acting on task with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException invalid command formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" public String actOn(TaskList tasks) throws IllegalCommandException {","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" // nothing specified after command","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that without specifying a task number\");","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" // specified content is not an integer","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" String content \u003d tokeniser.next();","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" if (!isInteger(content)) {","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" if (content.equals(\"all\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" return command.equals(\"mark\") ? tasks.markAll() : tasks.unmarkAll();","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... try a number instead\");","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" // if number of task does not exist","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" int id \u003d Integer.parseInt(content);","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" if (id \u003e tasks.getNumberOfTask() || id \u003c\u003d 0) {","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... this task does not exist :(\");","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" // checks which mark command it is","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" switch (command) {","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" case \"mark\":","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" String message \u003d tasks.markDone(id - 1);","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" return tasks.isAllComplete() ? message + tasks.list()","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" : message;","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" return tasks.markNotDone(id - 1);","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"help mark or unmark that\");","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" return actOn(tasks);","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":75}},{"path":"src/main/java/oreo/command/SaveCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.io.File;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"public class SaveCommand extends Command {","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" private final String filePath \u003d \"./oreo.txt\";","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" new FileWriter(filePath, false).close();","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" FileWriter fw \u003d null;","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" int numberOfTasks \u003d tasks.getNumberOfTask();","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c numberOfTasks; i++) {","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" String data \u003d tasks.get(i).writeToFile();","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" fw.write(data);","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" fw.close();","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" return \"Thoroughly remembered all your task for you! I think I deserve a belly rub!\";","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":46}},{"path":"src/main/java/oreo/datetime/TimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.datetime;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import java.util.Locale;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * Implements class that handles parsing of time input.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"public class TimeParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public static LocalDate today \u003d LocalDate.now();","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" public static LocalTime timeNow \u003d LocalTime.now();","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" * Parses date input for display.","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" * @param input date input.","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" * @return output date.","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if invalid format.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" private static String parseDateOut(String input) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" String[] formatsWithYear \u003d {\"d-M-yyyy\", \"d-M-yy\", \"d/M/yyyy\", \"d/M/yy\",","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" \"MMM d yyyy\", \"MMM d yy\", \"d MMM yyyy\", \"d MMM yy\", \"yyyy-M-d\", \"yy-M-d\"","lastModifiedDate":"2023-09-24"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" };","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" String[] formatsWithoutYear \u003d {\"d/M\", \"d-M\", \"MMM d\", \"d MMM\"};","lastModifiedDate":"2023-09-24"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" if (input.contains(\" \")) {","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" input \u003d formatDateWithWords(input);","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" for (String format : formatsWithYear) {","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(format);","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" LocalDate date \u003d LocalDate.parse(input, dtf);","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" // try other formats","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" for (String format : formatsWithoutYear) {","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" .appendPattern(format)","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" .parseDefaulting(ChronoField.YEAR, today.getYear())","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" .toFormatter(Locale.ENGLISH);","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" LocalDate date \u003d LocalDate.parse(input, dtf);","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" // try other formats","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" // if failed all formats throw exception","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"Date or date format is invalid\");","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" * Formats date input with \"MMM\" format to the first letter to be upper case and","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" * the rest, smaller case. For example, sep -\u003e Sep to enable the parse to recognise the month.","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" * This allows input to not case-sensitive.","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" * @param date date input from user.","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" * @return date in corrected format (if there contains words).","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" public static String formatDateWithWords(String date) {","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" // Split the input into words","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" String[] words \u003d date.split(\"\\\\s+\");","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" for (String word : words) {","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" if (!word.isEmpty()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" // Capitalize the first letter and convert the rest to lowercase","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" String capitalizedWord \u003d Character.toUpperCase(word.charAt(0)) +","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" word.substring(1).toLowerCase();","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" result.append(capitalizedWord).append(\" \");","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" return result.toString().trim(); // Remove trailing space","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" * Parses date for file data.","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":" * @param input date as displayed.","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" * @return output date for file data.","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if invalid format.","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" public static String parseDateForFile(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter format \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" LocalDate date \u003d LocalDate.parse(input, format);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" return date.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":" * Parses time input for display.","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" * @param input time input.","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" * @return output time.","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if invalid format.","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":" public static String parseTimeOut(String input) throws IllegalDateTimeException{","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" String[] formatsWithoutEnglish \u003d {","lastModifiedDate":"2023-09-25"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" \"HHmm\", \"HH:mm\", \"HH.mm\"","lastModifiedDate":"2023-09-25"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" };","lastModifiedDate":"2023-09-25"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":" String[] formatsWithEnglish \u003d {","lastModifiedDate":"2023-09-25"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":" \"h a\", \"ha\", \"h:mm a\", \"h:mma\", \"h.mm a\", \"h.mma\"","lastModifiedDate":"2023-09-25"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":" };","lastModifiedDate":"2023-09-21"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":" for (String format : formatsWithoutEnglish) {","lastModifiedDate":"2023-09-25"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(format);","lastModifiedDate":"2023-09-21"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":" LocalTime date \u003d LocalTime.parse(input, dtf);","lastModifiedDate":"2023-09-21"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":" return date.format(DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":" // try other formats","lastModifiedDate":"2023-09-21"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":" for (String format : formatsWithEnglish) {","lastModifiedDate":"2023-09-25"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-09-25"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":" .parseCaseInsensitive()","lastModifiedDate":"2023-09-25"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":" .appendPattern(format)","lastModifiedDate":"2023-09-25"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":" .toFormatter(Locale.ENGLISH);","lastModifiedDate":"2023-09-25"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":"// DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(format);","lastModifiedDate":"2023-09-25"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":" LocalTime date \u003d LocalTime.parse(input, dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":" return date.format(DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2023-09-25"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":" // try other formats","lastModifiedDate":"2023-09-25"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":" // if failed all formats throw exception","lastModifiedDate":"2023-09-21"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"Time or time format is invalid\");","lastModifiedDate":"2023-09-21"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":" * Parses time for file data.","lastModifiedDate":"2023-09-25"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":" * @param input time input.","lastModifiedDate":"2023-09-25"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":" * @return output time.","lastModifiedDate":"2023-09-25"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if invalid format.","lastModifiedDate":"2023-09-25"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":" public static String parseTimeForFile(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":" if (input \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":" return \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter format \u003d DateTimeFormatter.ofPattern(\"h:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":" LocalTime time \u003d LocalTime.parse(input, format);","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":" return time.format(DateTimeFormatter.ofPattern(\"HHmm\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":165,"author":{"gitId":"dloh2236"},"content":" * Parses input for display.","lastModifiedDate":"2023-09-25"},{"lineNumber":166,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":167,"author":{"gitId":"dloh2236"},"content":" * @param input date time input by user.","lastModifiedDate":"2023-09-25"},{"lineNumber":168,"author":{"gitId":"dloh2236"},"content":" * @return date time format for display.","lastModifiedDate":"2023-09-25"},{"lineNumber":169,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException invalid format.","lastModifiedDate":"2023-09-25"},{"lineNumber":170,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":171,"author":{"gitId":"dloh2236"},"content":" public static String[] parseInputOut(String input) throws IllegalDateTimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"dloh2236"},"content":" String[] out \u003d new String[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"dloh2236"},"content":" String[] dateTime \u003d input.split(\", \");","lastModifiedDate":"2023-09-21"},{"lineNumber":174,"author":{"gitId":"dloh2236"},"content":" String exceptionMessage \u003d \"\";","lastModifiedDate":"2023-09-21"},{"lineNumber":175,"author":{"gitId":"dloh2236"},"content":" boolean firstElementNotDate \u003d false;","lastModifiedDate":"2023-09-21"},{"lineNumber":176,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":177,"author":{"gitId":"dloh2236"},"content":" String missingComma \u003d \"If you are putting both date and time, you might have missed \\\", \\\" \"","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"dloh2236"},"content":" + \"between the date and the time\\n (e.g. \\\"1 Jan, 5pm\\\").\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"dloh2236"},"content":" + \"Try \\\"help datetime\\\" to learn more about accepted date time formats\";","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"dloh2236"},"content":" if (dateTime.length \u003d\u003d 2) {","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"dloh2236"},"content":" out[0] \u003d parseDateOut(dateTime[0]);","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"dloh2236"},"content":" exceptionMessage +\u003d (e.getMessage() + \". \");","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":188,"author":{"gitId":"dloh2236"},"content":" out[1] \u003d parseTimeOut(dateTime[1]);","lastModifiedDate":"2023-09-22"},{"lineNumber":189,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":190,"author":{"gitId":"dloh2236"},"content":" exceptionMessage +\u003d (e.getMessage() + \". \");","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":192,"author":{"gitId":"dloh2236"},"content":" if (exceptionMessage.isEmpty()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":193,"author":{"gitId":"dloh2236"},"content":" return out;","lastModifiedDate":"2023-09-22"},{"lineNumber":194,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-22"},{"lineNumber":195,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(exceptionMessage);","lastModifiedDate":"2023-09-22"},{"lineNumber":196,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":197,"author":{"gitId":"dloh2236"},"content":" } else if (dateTime.length \u003d\u003d 1){","lastModifiedDate":"2023-09-22"},{"lineNumber":198,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":199,"author":{"gitId":"dloh2236"},"content":" out[0] \u003d parseDateOut(dateTime[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":201,"author":{"gitId":"dloh2236"},"content":" exceptionMessage +\u003d (e.getMessage() + \". \");","lastModifiedDate":"2023-09-22"},{"lineNumber":202,"author":{"gitId":"dloh2236"},"content":" firstElementNotDate \u003d true;","lastModifiedDate":"2023-09-21"},{"lineNumber":203,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":204,"author":{"gitId":"dloh2236"},"content":" if (firstElementNotDate) {","lastModifiedDate":"2023-09-21"},{"lineNumber":205,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":206,"author":{"gitId":"dloh2236"},"content":" out[1] \u003d parseTimeOut(dateTime[0]);","lastModifiedDate":"2023-09-21"},{"lineNumber":207,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":208,"author":{"gitId":"dloh2236"},"content":" exceptionMessage +\u003d (e.getMessage() + \". \");","lastModifiedDate":"2023-09-22"},{"lineNumber":209,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":210,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":211,"author":{"gitId":"dloh2236"},"content":" if (out[0] \u003d\u003d null \u0026\u0026 out[1] \u003d\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":212,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(exceptionMessage +\u003d missingComma);","lastModifiedDate":"2023-09-22"},{"lineNumber":213,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-22"},{"lineNumber":214,"author":{"gitId":"dloh2236"},"content":" return out;","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":216,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-22"},{"lineNumber":217,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"Not sure what you did there but I couldn\u0027t understand \"","lastModifiedDate":"2023-09-22"},{"lineNumber":218,"author":{"gitId":"dloh2236"},"content":" + \"your date time input\");","lastModifiedDate":"2023-09-22"},{"lineNumber":219,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":220,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":221,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":223,"author":{"gitId":"dloh2236"},"content":" * Checks if to date is after from date.","lastModifiedDate":"2023-09-25"},{"lineNumber":224,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":225,"author":{"gitId":"dloh2236"},"content":" * @param fromDate start date.","lastModifiedDate":"2023-09-25"},{"lineNumber":226,"author":{"gitId":"dloh2236"},"content":" * @param toDate end date.","lastModifiedDate":"2023-09-25"},{"lineNumber":227,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if end date is before start date.","lastModifiedDate":"2023-09-25"},{"lineNumber":228,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":229,"author":{"gitId":"dloh2236"},"content":" public static void checkValidEventDate(String fromDate, String toDate) throws IllegalDateTimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"dloh2236"},"content":" LocalDate from \u003d LocalDate.parse(fromDate,","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"dloh2236"},"content":" LocalDate to \u003d LocalDate.parse(toDate,","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"dloh2236"},"content":" if (to.isBefore(from)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"to date cannot be earlier than from date\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":236,"author":{"gitId":"dloh2236"},"content":" + toDate + \" is before \" + fromDate);","lastModifiedDate":"2023-09-21"},{"lineNumber":237,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":238,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":239,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":240,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":241,"author":{"gitId":"dloh2236"},"content":" * Checks if to time is after from time.","lastModifiedDate":"2023-09-25"},{"lineNumber":242,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":243,"author":{"gitId":"dloh2236"},"content":" * @param fromTime start time.","lastModifiedDate":"2023-09-25"},{"lineNumber":244,"author":{"gitId":"dloh2236"},"content":" * @param toTime end time.","lastModifiedDate":"2023-09-25"},{"lineNumber":245,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if end time is before start time in the same day.","lastModifiedDate":"2023-09-25"},{"lineNumber":246,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":247,"author":{"gitId":"dloh2236"},"content":" public static void checkValidEventTime(String fromTime, String toTime) throws IllegalDateTimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":248,"author":{"gitId":"dloh2236"},"content":" LocalTime from \u003d LocalTime.parse(fromTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":249,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":250,"author":{"gitId":"dloh2236"},"content":" LocalTime to \u003d LocalTime.parse(toTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":251,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":252,"author":{"gitId":"dloh2236"},"content":" if (to.isBefore(from)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":253,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"Sorry but to time cannot be before from time\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":254,"author":{"gitId":"dloh2236"},"content":" + toTime + \" is before \" + fromTime);","lastModifiedDate":"2023-09-21"},{"lineNumber":255,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":256,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":257,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":258,"author":{"gitId":"dloh2236"},"content":" public static String getTodayString() {","lastModifiedDate":"2023-09-21"},{"lineNumber":259,"author":{"gitId":"dloh2236"},"content":" return today.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":260,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":261,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":262,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":263,"author":{"gitId":"dloh2236"},"content":" * Gets the next occurrence of the date for a specified time.","lastModifiedDate":"2023-09-25"},{"lineNumber":264,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":265,"author":{"gitId":"dloh2236"},"content":" * @param timeString specified time to check.","lastModifiedDate":"2023-09-25"},{"lineNumber":266,"author":{"gitId":"dloh2236"},"content":" * @return Date of next occurrence of time.","lastModifiedDate":"2023-09-25"},{"lineNumber":267,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":268,"author":{"gitId":"dloh2236"},"content":" public static String getNextDateOfTime(String timeString) {","lastModifiedDate":"2023-09-25"},{"lineNumber":269,"author":{"gitId":"dloh2236"},"content":" LocalTime time \u003d LocalTime.parse(timeString,","lastModifiedDate":"2023-09-22"},{"lineNumber":270,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":271,"author":{"gitId":"dloh2236"},"content":" if (time.isBefore(timeNow)) {","lastModifiedDate":"2023-09-22"},{"lineNumber":272,"author":{"gitId":"dloh2236"},"content":" return today.plusDays(1).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":273,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":274,"author":{"gitId":"dloh2236"},"content":" return getTodayString();","lastModifiedDate":"2023-09-22"},{"lineNumber":275,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":276,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":277,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":278,"author":{"gitId":"dloh2236"},"content":" * Gets the next occurrence of date considering both start and end time.","lastModifiedDate":"2023-09-25"},{"lineNumber":279,"author":{"gitId":"dloh2236"},"content":" * Used for the logic for event task.","lastModifiedDate":"2023-09-25"},{"lineNumber":280,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":281,"author":{"gitId":"dloh2236"},"content":" * @param startTimeString From time from event.","lastModifiedDate":"2023-09-25"},{"lineNumber":282,"author":{"gitId":"dloh2236"},"content":" * @param endtimeString To time from event.","lastModifiedDate":"2023-09-25"},{"lineNumber":283,"author":{"gitId":"dloh2236"},"content":" * @param endDateString To date from event","lastModifiedDate":"2023-09-25"},{"lineNumber":284,"author":{"gitId":"dloh2236"},"content":" * @return Date of next occurrence.","lastModifiedDate":"2023-09-25"},{"lineNumber":285,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":286,"author":{"gitId":"dloh2236"},"content":" public static String getNextDateOfTime(String startTimeString, String endtimeString,String endDateString) {","lastModifiedDate":"2023-09-25"},{"lineNumber":287,"author":{"gitId":"dloh2236"},"content":" if (endDateString \u003d\u003d null) {","lastModifiedDate":"2023-09-22"},{"lineNumber":288,"author":{"gitId":"dloh2236"},"content":" return getNextDateOfTime(endtimeString);","lastModifiedDate":"2023-09-22"},{"lineNumber":289,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-22"},{"lineNumber":290,"author":{"gitId":"dloh2236"},"content":" return getNextDateOfTime(startTimeString);","lastModifiedDate":"2023-09-22"},{"lineNumber":291,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":292,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":293,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":294,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":295,"author":{"gitId":"dloh2236"},"content":" * Returns the date with year set to the next occurrence w.r.t the current date","lastModifiedDate":"2023-09-25"},{"lineNumber":296,"author":{"gitId":"dloh2236"},"content":" * Used for deadline task logic and event end time","lastModifiedDate":"2023-09-25"},{"lineNumber":297,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":298,"author":{"gitId":"dloh2236"},"content":" * @param dateString","lastModifiedDate":"2023-09-25"},{"lineNumber":299,"author":{"gitId":"dloh2236"},"content":" * @return","lastModifiedDate":"2023-09-25"},{"lineNumber":300,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":301,"author":{"gitId":"dloh2236"},"content":" public static String getNextDate(String dateString) {","lastModifiedDate":"2023-09-25"},{"lineNumber":302,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-09-25"},{"lineNumber":303,"author":{"gitId":"dloh2236"},"content":" LocalDate date \u003d LocalDate.parse(dateString, dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":304,"author":{"gitId":"dloh2236"},"content":" if (date.isBefore(today)) {","lastModifiedDate":"2023-09-25"},{"lineNumber":305,"author":{"gitId":"dloh2236"},"content":" return date.plusYears(1).format(dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":306,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-25"},{"lineNumber":307,"author":{"gitId":"dloh2236"},"content":" return date.format(dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":308,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":309,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":310,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":311,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":312,"author":{"gitId":"dloh2236"},"content":" * Used for when there is a startDate and endDate in an event, to consider valid durations.","lastModifiedDate":"2023-09-25"},{"lineNumber":313,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":314,"author":{"gitId":"dloh2236"},"content":" * @param startDate start date of event","lastModifiedDate":"2023-09-25"},{"lineNumber":315,"author":{"gitId":"dloh2236"},"content":" * @param endDate end date of event","lastModifiedDate":"2023-09-25"},{"lineNumber":316,"author":{"gitId":"dloh2236"},"content":" * @return valid start date","lastModifiedDate":"2023-09-25"},{"lineNumber":317,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":318,"author":{"gitId":"dloh2236"},"content":" public static String getNextValidDuration(String startDate, String endDate) {","lastModifiedDate":"2023-09-25"},{"lineNumber":319,"author":{"gitId":"dloh2236"},"content":" if (endDate \u003d\u003d null) {","lastModifiedDate":"2023-09-25"},{"lineNumber":320,"author":{"gitId":"dloh2236"},"content":" return startDate;","lastModifiedDate":"2023-09-25"},{"lineNumber":321,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":322,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":323,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-09-25"},{"lineNumber":324,"author":{"gitId":"dloh2236"},"content":" LocalDate end \u003d LocalDate.parse(endDate, dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":325,"author":{"gitId":"dloh2236"},"content":" LocalDate start \u003d LocalDate.parse(startDate, dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":326,"author":{"gitId":"dloh2236"},"content":" if (end.isBefore(today)) {","lastModifiedDate":"2023-09-25"},{"lineNumber":327,"author":{"gitId":"dloh2236"},"content":" return start.plusYears(1).format(dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":328,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-25"},{"lineNumber":329,"author":{"gitId":"dloh2236"},"content":" return startDate;","lastModifiedDate":"2023-09-25"},{"lineNumber":330,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":331,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":332,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dloh2236":332}},{"path":"src/main/java/oreo/exception/IllegalCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.exception;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"public class IllegalCommandException extends NoSuchElementException {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":" private String message;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" * Constructor for IllegalCommandException.","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" * @param message message to include.","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public IllegalCommandException(String message) {","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" this.message \u003d message;","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" String fullMessage \u003d \"I don\u0027t think I can \" + message + \"\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" + \"do you want to try again?\";","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" return fullMessage;","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"dloh2236":23}},{"path":"src/main/java/oreo/exception/IllegalDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.exception;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"public class IllegalDateTimeException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":" private String message;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" * Constructor for IllegalDateTimeException.","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" * @param message message to include.","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public IllegalDateTimeException(String message) {","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" super(message);","lastModifiedDate":"2023-09-23"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"dloh2236":16}},{"path":"src/main/java/oreo/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.parser;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.command.*;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-16"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" * Implements class that handles parsing of user input","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * Parses input by user.","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * @param fullCommand full input by user.","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * @return Command instance of the appropriate type base on input.","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" public static Command parse(String fullCommand) {","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" Scanner tokeniser \u003d new Scanner(fullCommand);","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" String command \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" command \u003d tokeniser.next();","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" return new EmptyCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" switch (command) {","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" case \"bye\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" return new ByeCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" case \"list\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" case \"unmark\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" case \"mark\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" return new MarkUnmarkCommand(command, tokeniser);","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" case \"delete\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" case \"clear\":","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" return new DeleteCommand(command, tokeniser);","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" case \"find\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" return new FindCommand(tokeniser);","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" case \"todo\":","lastModifiedDate":"2023-09-16"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" case \"deadline\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" case \"event\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" return new AddCommand(command, tokeniser);","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" case \"edit\" :","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" case \"modify\" :","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" case \"update\" :","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" return new EditCommand(command,tokeniser);","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" case \"help\" :","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" case \"hello\" :","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" case \"hi\" :","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" return new HelpCommand(command, tokeniser);","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" case \"save\" :","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" return new SaveCommand();","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-16"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" return new InvalidCommand();","lastModifiedDate":"2023-09-16"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" * Parse input by user in Edit Mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" * @param fullCommand full input from user.","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" * @return Command instance of the appropriate type base on input.","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" public static Command parseEditMode(String fullCommand) {","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" Scanner tokeniser \u003d new Scanner(fullCommand);","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" String command \u003d \"\";","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" command \u003d tokeniser.next();","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" return new EditCommand();","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" switch (command) {","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" case \"todo\":","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" case \"event\":","lastModifiedDate":"2023-09-18"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" return new AddCommand(command, tokeniser);","lastModifiedDate":"2023-09-18"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" case \"C\" :","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" case \"c\" :","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" return new ExitModeCommand();","lastModifiedDate":"2023-09-18"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-18"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" return new EditCommand();","lastModifiedDate":"2023-09-18"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":90}},{"path":"src/main/java/oreo/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.io.File;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * This class implements the storage function of the chatbot","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" private final File storageFile;","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" private String filePath;","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" * Constructor for storage.","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" * @param filePath file path to where file is saved.","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" this.storageFile \u003d new File(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" loadFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" private void loadFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" storageFile.createNewFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" * Reads saved file if it exists.","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" * @param tasks","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" * @throws FileNotFoundException if file does not exist.","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException invalid date time inputs.","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" public void readFile(TaskList tasks) throws FileNotFoundException, IllegalDateTimeException {","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" Scanner sc \u003d new Scanner(this.storageFile);","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" int id \u003d sc.nextInt();","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" int mark \u003d sc.nextInt();","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" String description \u003d sc.nextLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" Task newTask \u003d Task.generateSavedTask(id, mark \u003d\u003d 1, description);","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" * Clears file in the file path.","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" public void clearFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" new FileWriter(filePath, false).close();","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" * Writes file with list of task input upon bye command.","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" * @param tasks TaskList with all the task.","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" * @throws IOException for filewriter.","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" public void writeFile(TaskList tasks) throws IOException {","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" clearFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" FileWriter fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" int numberOfTasks \u003d tasks.getNumberOfTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c numberOfTasks; i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" String data \u003d tasks.get(i).writeToFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" fw.write(data);","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" fw.close();","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":89}},{"path":"src/main/java/oreo/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.datetime.TimeParser;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":" private String date;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" private String time;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" * Constructor for Deadline Class.","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * @param d description of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * @param date deadline date.","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * @param time deadline time.","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException wrong date time format.","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" public Deadline(String description, String date, String time) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" super(description);","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" this.date \u003d (date \u003d\u003d null) ? TimeParser.getNextDateOfTime(time) : TimeParser.getNextDate(date);","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" this.time \u003d time;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" * Constructor for Deadline Class. Mainly used for file reading","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" * @param d description of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * @param date deadline date.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" * @param time deadline time.","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" * @param isComplete whether deadline is completed.","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" public Deadline(String description, String date, String time, boolean isComplete) {","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" super(description);","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" this.time \u003d time;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" this.isComplete \u003d isComplete;","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" String marker \u003d \"☐\";","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" if (this.isComplete) {","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" marker \u003d \"☑\";","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" String dateString \u003d (this.date \u003d\u003d null) ? \"\" : (\" \" + this.date);","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" String timeString \u003d (this.time \u003d\u003d null) ? \"\" : (\" \" + this.time);","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" return \"\\uD83C\\uDD73:\" + \" \" + this.description","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" + \" (by: \" + dateString + timeString + \") \"","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" + marker + \"\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" int mark \u003d isComplete ? 1 : 0;","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" String timeString \u003d (this.time \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.time));","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" String data \u003d 2 + \" \" + mark + description + \"/\" + TimeParser.parseDateForFile(this.date) + timeString","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" + System.lineSeparator();","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" return data;","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" public String getTaskInEditFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" String timeString \u003d (this.time \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.time));","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" return \"deadline\" + description + \" /by \" + TimeParser.parseDateForFile(this.date) + timeString;","lastModifiedDate":"2023-09-21"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dloh2236":76}},{"path":"src/main/java/oreo/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.datetime.TimeParser;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" private String fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" private String fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" private String toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" private String toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * Constructor for Event Class.","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * @param d description of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @param fromDate start date.","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * @param fromTime start time.","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * @param toDate end date.","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * @param toTime end time.","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException invalid date time inputs.","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" public Event(String d, String fromDate, String fromTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" String toDate, String toTime) throws IllegalDateTimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" super(d);","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" eventDateTimeFromToCombinationChecker(fromTime, toTime);","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" this.fromDate \u003d (fromDate \u003d\u003d null) ? TimeParser.getNextDateOfTime(fromTime, toTime, toDate)","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" : TimeParser.getNextValidDuration(fromDate, toDate);","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" this.fromTime \u003d fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" this.toDate \u003d (toDate \u003d\u003d null) ? this.fromDate : TimeParser.getNextDate(toDate);","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" this.toTime \u003d toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" TimeParser.checkValidEventDate(this.fromDate, this.toDate);","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" if (this.fromDate.equals(this.toDate) \u0026\u0026 this.fromTime !\u003d null","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" \u0026\u0026 this.toTime !\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" TimeParser.checkValidEventTime(this.fromTime, this.toTime);","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" * Checks if date time combination is valid. Used for above constructor","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" * @param fromTime start time.","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" * @param toTime end time.","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException when date time combination is not valid.","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" private void eventDateTimeFromToCombinationChecker(String fromTime, String toTime)","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" throws IllegalDateTimeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" if ((fromTime !\u003d null \u0026\u0026 toTime \u003d\u003d null) || (fromTime \u003d\u003d null \u0026\u0026 toTime !\u003d null)) {","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"If you have a time in either \\\"/from\\\" or \\\"/to\\\" \"","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" + \"you will need time in both fields! If not Oreo will be lost on what to do!\");","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" * Constructor of Event task. Mainly used for file reading.","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" * @param d description of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" * @param fromDate start date.","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" * @param fromTime start time.","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" * @param toDate end date.","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" * @param toTime end time.","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" * @param isComplete if task is complete","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" public Event(String d, String fromDate, String fromTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" String toDate, String toTime , boolean isComplete) {","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" super(d);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" this.fromTime \u003d fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" this.toTime \u003d toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" this.isComplete \u003d isComplete;","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" String marker \u003d \"☐\";","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" if (this.isComplete) {","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" marker \u003d \"☑\";","lastModifiedDate":"2023-09-18"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" String fromDateString \u003d (this.fromDate \u003d\u003d null) ? \"\" : (\" \" + this.fromDate);","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" String fromTimeString \u003d (this.fromTime \u003d\u003d null) ? \"\" : (\" \" + this.fromTime);","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" String toDateString \u003d (this.toDate \u003d\u003d null) ? \"\" : (\" \" + this.toDate);","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" String toTimeString \u003d (this.toTime \u003d\u003d null) ? \"\" : (\" \" + this.toTime);","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" return \"\\uD83C\\uDD74:\" + \" \" + this.description","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" + \" (from: \" + fromDateString + fromTimeString","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" + \" to: \" + toDateString + toTimeString + \") \"","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" + marker + \"\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" int mark \u003d isComplete ? 1 : 0;","lastModifiedDate":"2023-09-03"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" String fromTimeString \u003d (this.fromTime \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.fromTime));","lastModifiedDate":"2023-09-21"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" String toTimeString \u003d (this.toTime \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.toTime));","lastModifiedDate":"2023-09-21"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" String data \u003d 3 + \" \" + mark + description + \"/\" + TimeParser.parseDateForFile(this.fromDate) + fromTimeString","lastModifiedDate":"2023-09-21"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" + \"/\" + TimeParser.parseDateForFile(this.toDate) + toTimeString + System.lineSeparator();","lastModifiedDate":"2023-09-21"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" return data;","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" public String getTaskInEditFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" String fromTimeString \u003d (this.fromTime \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.fromTime));","lastModifiedDate":"2023-09-21"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":" String toTimeString \u003d (this.toTime \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.toTime));","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" return \"event\" + description + \" /from \" + TimeParser.parseDateForFile(this.fromDate) + fromTimeString","lastModifiedDate":"2023-09-21"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" + \" /to \" + TimeParser.parseDateForFile(this.toDate) + toTimeString;","lastModifiedDate":"2023-09-21"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dloh2236":116}},{"path":"src/main/java/oreo/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.datetime.TimeParser;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2023-09-23"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" * This class implements an abstract class, parent class for","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" * the other specific task.","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"public abstract class Task implements Comparable\u003cTask\u003e {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * id of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" protected int id;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" * description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" * whether task is complete.","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" protected boolean isComplete;","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" ","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" private static int idTracker \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" * Constructor of Task.","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" * @param d description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" public Task(String d) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" this.id \u003d idTracker;","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" idTracker++;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" this.description \u003d d;","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" * Generates the appropriate sub-task instance based on user input.","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" * @param command Command inputted by user.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" * @param tokeniser String that follows the command as a Scanner.","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" * @return Appropriate task base on input by user.","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException when command is invalid.","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException when date time input is invalid.","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" public static Task generateTask(String command, Scanner tokeniser) throws IllegalCommandException,","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-16"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"process an empty task\");","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" String contents \u003d tokeniser.nextLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" assert !contents.isEmpty(): \"contents should not be empty\";","lastModifiedDate":"2023-09-16"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" switch (command) {","lastModifiedDate":"2023-09-16"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" case \"todo\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" return processToDoCommand(contents);","lastModifiedDate":"2023-09-16"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-16"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" return processDeadlineCommand(contents);","lastModifiedDate":"2023-09-16"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" case \"event\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" return processEventCommand(contents);","lastModifiedDate":"2023-09-16"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-16"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"create such a task\");","lastModifiedDate":"2023-09-16"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" * Processes todo command for generateTask method.","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" * @param contents String after command.","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" * @return Task associated with input.","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException wrong command format.","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" private static Task processToDoCommand(String contents) throws IllegalCommandException {","lastModifiedDate":"2023-09-16"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" if (contents.contains(\"/by\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that for a todo, \"","lastModifiedDate":"2023-09-03"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" + \"are you thinking of a deadline?\");","lastModifiedDate":"2023-09-03"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" } else if (contents.contains(\"/from\") || contents.contains(\"/to\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that for a todo,\"","lastModifiedDate":"2023-09-03"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" + \"are you thinking of an event?\");","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" return new ToDo(contents);","lastModifiedDate":"2023-09-16"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" * Processes deadline command for generateTask method.","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" * @param contents String after command.","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" * @return Task associated with input.","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException wrong command format.","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" private static Task processDeadlineCommand(String contents) throws IllegalCommandException,","lastModifiedDate":"2023-09-16"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-16"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":" checkValidDeadlineFormat(contents); // catch invalid formats","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":" // Catch empty description and/or date","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" String[] parts \u003d contents.split(\" /by \", 2);","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" if (parts[0].isEmpty() || parts[0].isBlank()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"set a deadline without a description\");","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" } else if (parts[1].isEmpty() || parts[0].isBlank()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that, you might also want to include a date time\");","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" String[] dateTime \u003d TimeParser.parseInputOut(parts[1]);","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" return new Deadline(parts[0], dateTime[0], dateTime[1]);","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":" * Checks if deadline command format is valid and returns error messages accordingly.","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":" * @param contents String after command","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException wrong command format","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException wrong date time format","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":" private static void checkValidDeadlineFormat(String contents) throws IllegalCommandException,","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException{","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":" if (!contents.contains(\" /by \")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":" if (contents.contains(\"/by\")) {","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":" String[] parts \u003d contents.split(\"/by\");","lastModifiedDate":"2023-09-22"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":" int size \u003d parts.length;","lastModifiedDate":"2023-09-22"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":" switch (size) {","lastModifiedDate":"2023-09-22"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":" case 1:","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":" if (parts[0].isBlank()){","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that without a task description and date time\");","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that, you might also want to include a date time\");","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that, \"","lastModifiedDate":"2023-09-22"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":" + \"seems like you may have joined the \\\"by\\\" with the date time or unecessary characters. \"","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":" + \"Do leave space around \\\"by\\\"\");","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"set a deadline without a \\\"/by\\\",\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":" + \"or was there a typo?\");","lastModifiedDate":"2023-09-21"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":" } else if (contents.contains(\"/from\") || contents.contains(\"/to\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that for a deadline,\"","lastModifiedDate":"2023-09-03"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":" + \"are you thinking of an event?\");","lastModifiedDate":"2023-09-03"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":" * Processes event command for generateTask method.","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":" * @param contents String after command.","lastModifiedDate":"2023-09-22"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":" * @return Task associated with input.","lastModifiedDate":"2023-09-22"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException wrong command format.","lastModifiedDate":"2023-09-22"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":" private static Task processEventCommand(String contents) throws IllegalCommandException,","lastModifiedDate":"2023-09-16"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-16"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":" checkValidEventFormat(contents); // catch invalid formats","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":" // Catch empty description and/or date","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":" String[] message \u003d contents.split(\" /from \", 2);","lastModifiedDate":"2023-08-26"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":" if (message[0].isEmpty()) {","lastModifiedDate":"2023-09-18"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"process an event without a description\");","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":165,"author":{"gitId":"dloh2236"},"content":" String[] fromto \u003d message[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"dloh2236"},"content":" String[] fromDateTime \u003d TimeParser.parseInputOut(fromto[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"dloh2236"},"content":" String[] toDateTime \u003d TimeParser.parseInputOut(fromto[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"dloh2236"},"content":" return new Event(message[0], fromDateTime[0], fromDateTime[1],","lastModifiedDate":"2023-09-16"},{"lineNumber":169,"author":{"gitId":"dloh2236"},"content":" toDateTime[0], toDateTime[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"dloh2236"},"content":" * Checks if event command format is valid and returns error messages accordingly.","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"dloh2236"},"content":" * @param contents String after command","lastModifiedDate":"2023-09-22"},{"lineNumber":176,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException wrong command format","lastModifiedDate":"2023-09-22"},{"lineNumber":177,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException wrong date time format","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"dloh2236"},"content":" private static void checkValidEventFormat(String contents) throws IllegalCommandException,","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException{","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"dloh2236"},"content":" if (!contents.contains(\" /from \") || !contents.contains(\" /to \")) {","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"dloh2236"},"content":" if (contents.contains(\"/from\") \u0026\u0026 contents.contains(\"/to\")) {","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that, there might be some formatting \"","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"dloh2236"},"content":" + \"errors in your input, it should look like\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"dloh2236"},"content":" + \"\\\"event \u003cdescription\u003e /from \u003cdatetime\u003e /to \u003cdatetime\u003e\\\".\");","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"set an event without a \\\"/from\\\" and/or \\\"/to\\\",\\n\");","lastModifiedDate":"2023-09-22"},{"lineNumber":188,"author":{"gitId":"dloh2236"},"content":" } else if (contents.contains(\"/by\")) {","lastModifiedDate":"2023-09-22"},{"lineNumber":189,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that for an event,\"","lastModifiedDate":"2023-09-22"},{"lineNumber":190,"author":{"gitId":"dloh2236"},"content":" + \"are you thinking of an deadline?\");","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":192,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":193,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":194,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":195,"author":{"gitId":"dloh2236"},"content":" * Returns if task is complete.","lastModifiedDate":"2023-09-22"},{"lineNumber":196,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":197,"author":{"gitId":"dloh2236"},"content":" * @return whether task is complete.","lastModifiedDate":"2023-09-22"},{"lineNumber":198,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":199,"author":{"gitId":"dloh2236"},"content":" public boolean isComplete() {","lastModifiedDate":"2023-09-02"},{"lineNumber":200,"author":{"gitId":"dloh2236"},"content":" return this.isComplete;","lastModifiedDate":"2023-09-03"},{"lineNumber":201,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":204,"author":{"gitId":"dloh2236"},"content":" * Change mark to opposite of the current status.","lastModifiedDate":"2023-09-03"},{"lineNumber":205,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":206,"author":{"gitId":"dloh2236"},"content":" public void switchMark() {","lastModifiedDate":"2023-09-02"},{"lineNumber":207,"author":{"gitId":"dloh2236"},"content":" isComplete \u003d !isComplete;","lastModifiedDate":"2023-09-03"},{"lineNumber":208,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":211,"author":{"gitId":"dloh2236"},"content":" * Generates appropriate task from file data.","lastModifiedDate":"2023-09-03"},{"lineNumber":212,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":213,"author":{"gitId":"dloh2236"},"content":" * @param id determines type of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":214,"author":{"gitId":"dloh2236"},"content":" * @param mark determines if task is done.","lastModifiedDate":"2023-09-03"},{"lineNumber":215,"author":{"gitId":"dloh2236"},"content":" * @param description contains description of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":216,"author":{"gitId":"dloh2236"},"content":" * @return Appropriate task base on file input.","lastModifiedDate":"2023-09-03"},{"lineNumber":217,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException date time format is invalid,","lastModifiedDate":"2023-09-03"},{"lineNumber":218,"author":{"gitId":"dloh2236"},"content":" * file format is corrupt.","lastModifiedDate":"2023-09-03"},{"lineNumber":219,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":220,"author":{"gitId":"dloh2236"},"content":" public static Task generateSavedTask(int id, boolean mark, String description) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-02"},{"lineNumber":221,"author":{"gitId":"dloh2236"},"content":" switch (id) {","lastModifiedDate":"2023-08-30"},{"lineNumber":222,"author":{"gitId":"dloh2236"},"content":" case (1):","lastModifiedDate":"2023-08-30"},{"lineNumber":223,"author":{"gitId":"dloh2236"},"content":" return new ToDo(description, mark);","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"dloh2236"},"content":" case (2):","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"dloh2236"},"content":" String[] parts \u003d description.split(\"/\", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":226,"author":{"gitId":"dloh2236"},"content":" String[] dateTime \u003d TimeParser.parseInputOut(parts[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"dloh2236"},"content":" return new Deadline(parts[0], dateTime[0], dateTime[1], mark);","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"dloh2236"},"content":" case (3):","lastModifiedDate":"2023-09-23"},{"lineNumber":229,"author":{"gitId":"dloh2236"},"content":" String[] message \u003d description.split(\"/\", 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":230,"author":{"gitId":"dloh2236"},"content":" String[] fromDateTime \u003d TimeParser.parseInputOut(message[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"dloh2236"},"content":" String[] toDateTime \u003d TimeParser.parseInputOut(message[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"dloh2236"},"content":" return new Event(message[0], fromDateTime[0], fromDateTime[1],","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"dloh2236"},"content":" toDateTime[0], toDateTime[1], mark);","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-23"},{"lineNumber":235,"author":{"gitId":"dloh2236"},"content":" throw new InputMismatchException();","lastModifiedDate":"2023-09-23"},{"lineNumber":236,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":237,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":238,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":239,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":240,"author":{"gitId":"dloh2236"},"content":" * Converts task to file data to write to file.","lastModifiedDate":"2023-09-03"},{"lineNumber":241,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":242,"author":{"gitId":"dloh2236"},"content":" * @return task in file data format.","lastModifiedDate":"2023-09-03"},{"lineNumber":243,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":244,"author":{"gitId":"dloh2236"},"content":" public abstract String writeToFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":245,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":247,"author":{"gitId":"dloh2236"},"content":" * Returns task String for editing in text field.","lastModifiedDate":"2023-09-22"},{"lineNumber":248,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":249,"author":{"gitId":"dloh2236"},"content":" * @return","lastModifiedDate":"2023-09-22"},{"lineNumber":250,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":251,"author":{"gitId":"dloh2236"},"content":" public abstract String getTaskInEditFormat();","lastModifiedDate":"2023-09-18"},{"lineNumber":252,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":253,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":254,"author":{"gitId":"dloh2236"},"content":" * Checks if description contains keyword","lastModifiedDate":"2023-09-03"},{"lineNumber":255,"author":{"gitId":"dloh2236"},"content":" * @param keyword String of interest","lastModifiedDate":"2023-09-03"},{"lineNumber":256,"author":{"gitId":"dloh2236"},"content":" * @return true if description contains String","lastModifiedDate":"2023-09-03"},{"lineNumber":257,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":258,"author":{"gitId":"dloh2236"},"content":" public boolean contains(String keyword) {","lastModifiedDate":"2023-09-03"},{"lineNumber":259,"author":{"gitId":"dloh2236"},"content":" return description.contains(keyword);","lastModifiedDate":"2023-09-03"},{"lineNumber":260,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":261,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":262,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":263,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":264,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":265,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"dloh2236"},"content":" public abstract String toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":267,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":269,"author":{"gitId":"dloh2236"},"content":" *{@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":270,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":271,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":272,"author":{"gitId":"dloh2236"},"content":" public int compareTo(Task other) {","lastModifiedDate":"2023-08-24"},{"lineNumber":273,"author":{"gitId":"dloh2236"},"content":" return this.id - other.id;","lastModifiedDate":"2023-08-24"},{"lineNumber":274,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":275,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dloh2236":275}},{"path":"src/main/java/oreo/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.Formatter;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" * This class implements the TaskList used by the chatbot.","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" private int numberOfCompletedTasks \u003d 0;","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" * Constructor for TaskList, initialise an ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" public TaskList() {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * Adds task to list.","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" * @param task Task to be added.","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" if (task.isComplete()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" numberOfCompletedTasks++;","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" taskList.add(task);","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" * Removes task from the list.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" * @param index Index position of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" * @return Task that was removed from the list.","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" public Task remove(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" Task removedTask \u003d taskList.remove(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" if (removedTask.isComplete()) numberOfCompletedTasks--;","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" assert numberOfCompletedTasks \u003c\u003d getNumberOfTask():","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" \"completed task must always be less than or equal total number of task\";","lastModifiedDate":"2023-09-16"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" return removedTask;","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" * Clears entire list, only when file is corrupt.","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" public void clearAll() {","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" taskList.clear();","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" numberOfCompletedTasks \u003d 0;","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" * Returns number of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" * @return number of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" public int getNumberOfTask() {","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" return taskList.size();","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" * Gets task in that index.","lastModifiedDate":"2023-09-03"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" * @param index position of task in the list.","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" * @return Task in specified index.","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" public Task get(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" return taskList.get(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" * Checks if all tasks are complete.","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" * @return true if all complete, false if not.","lastModifiedDate":"2023-09-03"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" public boolean isAllComplete() {","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" return taskList.size() \u003d\u003d numberOfCompletedTasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" * String of list of task and list headers depending on","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" * number of task in the list left (including","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" * if all task are completed).","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":" * @return list of task and appropriate headers.","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" public String list() {","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" return \"List looks empty to me!\";","lastModifiedDate":"2023-09-21"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" StringBuilder displayList \u003d new StringBuilder();","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" if (isAllComplete()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" displayList.append(\"Wow! You are ALL COMPLETE!!!!\\n\")","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":" .append(\"TIME TO PLAY WITH MEEEEE :DDDD\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":" } else if (taskList.size() \u003e 10) {","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":" displayList.append(\"Seems like you have a lot of things to do...\\n\")","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" .append(\"Remember to play with me after :D\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" displayList.append(\"Here are the things you told me to keep track of:\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":" displayList.append(i + 1 + \". \").append(taskList.get(i).toString());","lastModifiedDate":"2023-09-02"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" return displayList.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":" * Marks task at index as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":" * @param index index.","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":" * @return appropriate response to action.","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":" public String markDone(int index) {","lastModifiedDate":"2023-09-21"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":" Task task \u003d get(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":" if (task.isComplete()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":" return \"That was done already...\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":" \"are you sure you wanted to mark that?\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":" + task.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":" task.switchMark();","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":" numberOfCompletedTasks++;","lastModifiedDate":"2023-09-02"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":" return \"Yay! One step closer to playing with me!\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":" + task.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":" * Unmarks task at index as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":" * @param index index.","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":" * @return appropriate response to action.","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":" public String markNotDone(int index) {","lastModifiedDate":"2023-09-21"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":" Task task \u003d get(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":" if (!task.isComplete()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":" return \"Don\u0027t worry it\u0027s still not done\\n\"","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":" + \"What are you doing? Let\u0027s get it done now!\\n\"","lastModifiedDate":"2023-09-03"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":" + task.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":" task.switchMark();","lastModifiedDate":"2023-09-02"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":" numberOfCompletedTasks--;","lastModifiedDate":"2023-09-02"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":" return \"Oh no... what happened :(\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":" + task.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":" * Marks all task in list as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":" * @return String response to marking all task.","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":" public String markAll() {","lastModifiedDate":"2023-09-21"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c getNumberOfTask(); i++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":165,"author":{"gitId":"dloh2236"},"content":" markDone(i);","lastModifiedDate":"2023-09-21"},{"lineNumber":166,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":167,"author":{"gitId":"dloh2236"},"content":" return \"Marked all your task done! TIME TO PLAY?\";","lastModifiedDate":"2023-09-21"},{"lineNumber":168,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":169,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":170,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"dloh2236"},"content":" * Unmarks all task in list as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":172,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"dloh2236"},"content":" * @return String response to unmarking all task.","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"dloh2236"},"content":" public String unmarkAll() {","lastModifiedDate":"2023-09-21"},{"lineNumber":176,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c getNumberOfTask(); i++) {","lastModifiedDate":"2023-09-21"},{"lineNumber":177,"author":{"gitId":"dloh2236"},"content":" markNotDone(i);","lastModifiedDate":"2023-09-21"},{"lineNumber":178,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":179,"author":{"gitId":"dloh2236"},"content":" return \"Oh noooo! Unmarked everything! D:\";","lastModifiedDate":"2023-09-21"},{"lineNumber":180,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":181,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":182,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"dloh2236"},"content":" * Lists search results.","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"dloh2236"},"content":" * @param keyword searching keyword.","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"dloh2236"},"content":" * @return String of list of task matching keyword.","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":188,"author":{"gitId":"dloh2236"},"content":" public String listResults(String keyword) {","lastModifiedDate":"2023-09-21"},{"lineNumber":189,"author":{"gitId":"dloh2236"},"content":" if (getNumberOfTask() \u003d\u003d 0) {","lastModifiedDate":"2023-09-21"},{"lineNumber":190,"author":{"gitId":"dloh2236"},"content":" return \"Unfortunately, I couldn\u0027t find any task matching \\\"\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":191,"author":{"gitId":"dloh2236"},"content":" keyword +","lastModifiedDate":"2023-09-21"},{"lineNumber":192,"author":{"gitId":"dloh2236"},"content":" \"\\\" :(\";","lastModifiedDate":"2023-09-21"},{"lineNumber":193,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-21"},{"lineNumber":194,"author":{"gitId":"dloh2236"},"content":" StringBuilder displayList \u003d new StringBuilder();","lastModifiedDate":"2023-09-21"},{"lineNumber":195,"author":{"gitId":"dloh2236"},"content":" displayList.append(\"Here are task(s) matching \\\"\" + keyword + \"\\\" in your list: \\n\");","lastModifiedDate":"2023-09-21"},{"lineNumber":196,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-21"},{"lineNumber":197,"author":{"gitId":"dloh2236"},"content":" displayList.append(i + 1 + \".\").append(taskList.get(i).toString());","lastModifiedDate":"2023-09-21"},{"lineNumber":198,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":199,"author":{"gitId":"dloh2236"},"content":" return displayList.toString();","lastModifiedDate":"2023-09-21"},{"lineNumber":200,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":201,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":202,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":203,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":204,"author":{"gitId":"dloh2236"},"content":" * Modifies task at index with new task.","lastModifiedDate":"2023-09-22"},{"lineNumber":205,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":206,"author":{"gitId":"dloh2236"},"content":" * @param index of old task.","lastModifiedDate":"2023-09-22"},{"lineNumber":207,"author":{"gitId":"dloh2236"},"content":" * @param task new task.","lastModifiedDate":"2023-09-22"},{"lineNumber":208,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":209,"author":{"gitId":"dloh2236"},"content":" public void modifyTask(int index, Task task) {","lastModifiedDate":"2023-09-18"},{"lineNumber":210,"author":{"gitId":"dloh2236"},"content":" if (taskList.get(index).isComplete()) numberOfCompletedTasks--;","lastModifiedDate":"2023-09-18"},{"lineNumber":211,"author":{"gitId":"dloh2236"},"content":" taskList.set(index, task);","lastModifiedDate":"2023-09-18"},{"lineNumber":212,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":213,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":213}},{"path":"src/main/java/oreo/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":" * Constructor of ToDo Class.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" * @param d task description","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" public ToDo(String d) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" super(d);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * Constructor for ToDo Class specifically for file reading.","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @param description task description.","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * @param completed whether task is complete.","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public ToDo(String description, boolean completed) {","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" super(description);","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" this.isComplete \u003d completed;","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" String marker \u003d \"☐\";","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" if (this.isComplete) {","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" marker \u003d \"☑\";","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" return \"\\uD83C\\uDD83:\" + \" \" + this.description + \" \" + marker + \"\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" int mark \u003d isComplete ? 1 : 0;","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" String data \u003d 1 + \" \" + mark + description + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" return data;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" public String getTaskInEditFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" return \"todo\" + description;","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dloh2236":54}},{"path":"src/main/java/oreo/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.ui;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" private Label dialog;","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" private HBox speechBubble;","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" speechBubble.heightProperty();","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" private void flip() {","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" dialog.setTextFill(Color.valueOf(\"#000000\"));","lastModifiedDate":"2023-09-18"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" speechBubble.setStyle(\"-fx-background-color: lightgrey;\" +","lastModifiedDate":"2023-09-18"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" \"-fx-background-radius: 1em;\");","lastModifiedDate":"2023-09-18"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" * Gets user dialog box.","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" * @param text user input.","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" * @param image user image.","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" * @return Dialog box containing both input and image.","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" public static DialogBox getUserDialog(String text, Image image) {","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" return new DialogBox(text, image);","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" * Gets Oreo\u0027s dialog box.","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" * @param text Oreo\u0027s response.","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" * @param image Oreo\u0027s image.","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" * @return Dialog box containing both Oreo\u0027s response and image.","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" public static DialogBox getOreoDialog(String text, Image image) {","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" var db \u003d new DialogBox(text, image);","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" db.flip();","lastModifiedDate":"2023-09-07"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" return db;","lastModifiedDate":"2023-09-07"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":83}},{"path":"src/main/java/oreo/ui/Formatter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.ui;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":" * This class implements the Ui of the chatbot.","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"public class Formatter {","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" private String logo \u003d \" .-\\\"-.\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" + \" /|6 6|\\\\\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" + \" _ ._ _ _ {/(_0_)\\\\}\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" + \"(_) | (/_ (_) _/ ^ \\\\_\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" + \" (/ /^\\\\ \\\\)-\u0027\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" + \" \\\"\\\"\u0027 \u0027\\\"\\\"\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * Indents line by the number of spaces specified.","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * @param message contents to be indented.","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * @param indents number of spaces to indent by.","lastModifiedDate":"2023-09-21"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" * @return returns the message with the specified amount of indents.","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" public static String indentLineBy(String message, int indents) {","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" StringBuilder indentedLine \u003d new StringBuilder();","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c indents; i++) {","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" indentedLine.append(\" \");","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" return indentedLine.append(message).toString();","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":31}},{"path":"src/main/java/oreo/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.ui;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import javafx.geometry.Side;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.layout.*;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"import oreo.Oreo;","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"import oreo.command.Command;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"import oreo.command.EditCommand;","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"import oreo.parser.Parser;","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"import java.util.Timer;","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"import java.util.TimerTask;","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" private TextField userInputEdit;","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" private ImageView sendButton;","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" private ImageView editButton;","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" private Oreo oreo;","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.png\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" private Image oreoImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/oreo.png\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" private void initialize() {","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty()); // scroll follows","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" * Sets oreo as an instance of oreo.","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" * @param oreo instance of oreo.","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" public void setOreo(Oreo oreo) {","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" this.oreo \u003d oreo;","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" * Creates two dialog boxes, one for user input and other one containing response to that particular use input.","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" * Clears the user input after processing.","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" Command c \u003d Parser.parse(input); // parses input and generates command","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" if (c.isExit()) {","lastModifiedDate":"2023-09-07"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" exit(input); // pass to exit method to handle","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" return;","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" } else if (c.isEdit()) {","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" userToEditHandler(c, input); // pass to userToEditHandler to handle","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" return;","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" String response \u003d oreo.execute(c);","lastModifiedDate":"2023-09-07"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, response);","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" userInput.clear();","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" * Creates two dialog boxes, one for user input and other one containing response to that particular use input","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" * in edit mode. Clears the user input after processing and changes text fields accordingly.","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" private void handleEditInput() {","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" String input \u003d userInputEdit.getText();","lastModifiedDate":"2023-09-18"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" Command c \u003d Parser.parseEditMode(input); // reads input in edit mode, generate command accordingly","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" String response;","lastModifiedDate":"2023-09-18"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" response \u003d oreo.executeEditMode(c);","lastModifiedDate":"2023-09-18"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException | IllegalCommandException e) {","lastModifiedDate":"2023-09-18"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, e.getMessage());","lastModifiedDate":"2023-09-18"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" Task taskToEdit \u003d (Task) oreo.getCache(1);","lastModifiedDate":"2023-09-18"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" userInputEdit.setText(taskToEdit.getTaskInEditFormat());","lastModifiedDate":"2023-09-18"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" return;","lastModifiedDate":"2023-09-18"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" if (c.isEdit()) {","lastModifiedDate":"2023-09-18"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, response);","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" Task taskToEdit \u003d (Task) oreo.getCache(1);","lastModifiedDate":"2023-09-18"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" userInputEdit.setText(taskToEdit.getTaskInEditFormat());","lastModifiedDate":"2023-09-18"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-18"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, response);","lastModifiedDate":"2023-09-18"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" oreo.clearCache(); // clear cache once edit mode exits","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" sendButton.setVisible(true); // show normal sendButton","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":" editButton.setVisible(false); // hides editButton","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":" userInputEdit.clear(); // clears edit text field","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":" userInputEdit.setVisible(false); // hides edit text field","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" userInput.setVisible(true); // show normal text field","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" userInput.clear(); // clear normal text field","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" userInput.requestFocus(); // brings focus to text field ready for next input","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" * Sets up UI for editing mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":" * @param command generated command based on input.","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":" * @param input from user.","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":" public void userToEditHandler(Command command, String input) {","lastModifiedDate":"2023-09-18"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":" String response \u003d \"\";","lastModifiedDate":"2023-09-18"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":" response \u003d oreo.execute(command);","lastModifiedDate":"2023-09-18"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e){","lastModifiedDate":"2023-09-18"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, e.getMessage());","lastModifiedDate":"2023-09-18"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":" userInput.clear();","lastModifiedDate":"2023-09-18"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":" return;","lastModifiedDate":"2023-09-18"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":" Task taskToEdit \u003d oreo.getTask((EditCommand) command); // get task to edit","lastModifiedDate":"2023-09-18"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":" oreo.cache(input); // cache input","lastModifiedDate":"2023-09-18"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":" oreo.cache(taskToEdit); // cache task","lastModifiedDate":"2023-09-18"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, response);","lastModifiedDate":"2023-09-18"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":" // changes from normal input mode to edit mode","lastModifiedDate":"2023-09-18"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":" userInput.clear();","lastModifiedDate":"2023-09-18"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":" userInput.setVisible(false);","lastModifiedDate":"2023-09-18"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":" userInputEdit.setVisible(true);","lastModifiedDate":"2023-09-18"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":" userInputEdit.setText(taskToEdit.getTaskInEditFormat());","lastModifiedDate":"2023-09-18"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":" sendButton.setVisible(false);","lastModifiedDate":"2023-09-18"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":" editButton.setVisible(true);","lastModifiedDate":"2023-09-18"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":" * Displays UI for start up.","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":" public void startUp() {","lastModifiedDate":"2023-09-07"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":" oreo.startUp();","lastModifiedDate":"2023-09-07"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":" greetUser();","lastModifiedDate":"2023-09-07"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":" } catch (FileNotFoundException | IllegalDateTimeException |","lastModifiedDate":"2023-09-07"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":" InputMismatchException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":" // if file is corrupt","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":" oreo.clearTaskAndFile();","lastModifiedDate":"2023-09-07"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":" String fileCorruptMessage \u003d \"saved file is corrupt, creating new file...\";","lastModifiedDate":"2023-09-07"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":" DialogBox.getOreoDialog(fileCorruptMessage, oreoImage));","lastModifiedDate":"2023-09-07"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":" greetUser();","lastModifiedDate":"2023-09-16"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":" * Displays UI for greeting user.","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":165,"author":{"gitId":"dloh2236"},"content":" private void greetUser() {","lastModifiedDate":"2023-09-07"},{"lineNumber":166,"author":{"gitId":"dloh2236"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":167,"author":{"gitId":"dloh2236"},"content":" DialogBox.getOreoDialog(oreo.greet(), oreoImage));","lastModifiedDate":"2023-09-07"},{"lineNumber":168,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":169,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":170,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"dloh2236"},"content":" * Displays UI when user enters \"bye\" command.","lastModifiedDate":"2023-09-22"},{"lineNumber":172,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"dloh2236"},"content":" * @param input user input.","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":176,"author":{"gitId":"dloh2236"},"content":" private void exit(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":177,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":178,"author":{"gitId":"dloh2236"},"content":" oreo.closeProcess();","lastModifiedDate":"2023-09-07"},{"lineNumber":179,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, oreo.sayBye());","lastModifiedDate":"2023-09-18"},{"lineNumber":180,"author":{"gitId":"dloh2236"},"content":" userInput.clear();","lastModifiedDate":"2023-09-21"},{"lineNumber":181,"author":{"gitId":"dloh2236"},"content":" new Timer().schedule(new TimerTask() {","lastModifiedDate":"2023-09-21"},{"lineNumber":182,"author":{"gitId":"dloh2236"},"content":" public void run () {","lastModifiedDate":"2023-09-21"},{"lineNumber":183,"author":{"gitId":"dloh2236"},"content":" System.exit(0);","lastModifiedDate":"2023-09-21"},{"lineNumber":184,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":185,"author":{"gitId":"dloh2236"},"content":" }, 1000); // shut down 1s after dialogbox displays","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":187,"author":{"gitId":"dloh2236"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":188,"author":{"gitId":"dloh2236"},"content":" DialogBox.getOreoDialog(e.getMessage(), oreoImage));","lastModifiedDate":"2023-09-07"},{"lineNumber":189,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":190,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":191,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":192,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":193,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":194,"author":{"gitId":"dloh2236"},"content":" * Sets string for dialog containers.","lastModifiedDate":"2023-09-22"},{"lineNumber":195,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":196,"author":{"gitId":"dloh2236"},"content":" * @param input user input.","lastModifiedDate":"2023-09-22"},{"lineNumber":197,"author":{"gitId":"dloh2236"},"content":" * @param response bot response.","lastModifiedDate":"2023-09-22"},{"lineNumber":198,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":199,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":200,"author":{"gitId":"dloh2236"},"content":" private void setDialogContainer(String input, String response) {","lastModifiedDate":"2023-09-18"},{"lineNumber":201,"author":{"gitId":"dloh2236"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-18"},{"lineNumber":202,"author":{"gitId":"dloh2236"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-18"},{"lineNumber":203,"author":{"gitId":"dloh2236"},"content":" DialogBox.getOreoDialog(response, oreoImage)","lastModifiedDate":"2023-09-18"},{"lineNumber":204,"author":{"gitId":"dloh2236"},"content":" );","lastModifiedDate":"2023-09-18"},{"lineNumber":205,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":206,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":206}},{"path":"src/main/resources/help/bye.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"bye\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Closes the application and saves all tasks user has inputted.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"bye\" - closes application and saves all tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"see above","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/clear.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"clear\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Deletes all task in the list. Similar to \"delete all\"","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"clear\" - deletes all task in list.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"see above","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/datetime.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"Seems like you need help with some date time formats! Oreo knows the time well so don\u0027t worry!","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"ACCEPTED DATE FORMATS:","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"d/M/yyyy (e.g. 1/1/2023, 01-12-2023) *dashes are accepted too","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"d/M/yy (e.g. 1/1/23, 01-12-23) *dashes are accepted too","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"MMM d yyyy (e.g. Jan 1 2023) *not case sensitive","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"MMM d yy (e.g. Jan 1 23) *not case sensitive","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"d MMM yyyy (e.g. 1 Jan 2023) *not case sensitive","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"d MMM yy (e.g. 1 Jan 24) *not case sensitive","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"yyyy/M/d (e.g 2023/1/1, 2023-12-01) *dashes are accepted too","lastModifiedDate":"2023-09-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"yy/M/d (e.g. 23/1/1, 23-12-01) *dashes are accepted too","lastModifiedDate":"2023-09-24"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"d/M (e.g. 1/1, 1/12) *dashes are accepted too","lastModifiedDate":"2023-09-24"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"MMM d (e.g Jan 1, jan 1) *not case senstiive","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"d MMM (e.g. 1 Jan, 1 jan) *not case sensitive","lastModifiedDate":"2023-09-24"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"*note: non-year formats have their years set to the occurrence of that date.","lastModifiedDate":"2023-09-24"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"ACCEPTED TIME FORMATS:","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"HHmm (e.g. 1800)","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"h a (e.g. 6 pm, 6 PM)","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"ha (e.g. 6pm, 6PM)","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"HH:mm (e.g. 18:00, 18.00) *periods are accepted too","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"h:mm a (e.g. 6:00 pm, 6:00 PM, 6.00 PM) *periods are accepted too, not case sensitive","lastModifiedDate":"2023-09-24"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"h:mma (e.g. 6:00pm, 6:00PM, 6.00PM) *periods are accepted too, not case sensitive","lastModifiedDate":"2023-09-24"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":"✓ A GOOD EXAMPLE (BOTH DATE AND TIME):","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"\"1 Jan 2023, 6pm\"","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":"✗ BAD EXAMPLES:","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":"\"1 /0 1/2023\" - unnecessary blank space","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":"\"1 Jan 2023 6pm\" - missing comma","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":"For additional info, type \"help datetimeMore\"","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":33}},{"path":"src/main/resources/help/datetimeMore.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"ADDITIONAL INFO:","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"1. Any combination of date time inputs. Entering date only, time only or both are valid.","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"2. Time after date must be separated with a \", \" (e.g. 1 Jan 2023, 6pm).","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"3. If no date is specified, date will be set next occurrence of that time.","lastModifiedDate":"2023-09-24"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"4. For events with no date specified, date will be set based on point 3 with respect to the end time.","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"5. Date specified without a given year will be assigned the next instance of this date.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"6. For event datetime inputs, \"/to\" date must be after \"/from\" date.","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"7. For event datetime inputs, an unspecified \"/to\" date will set \"/to\" date to the specified \"/from\" date. (this is valid: \"event playtime /from 1 jan, 2pm /to 5pm\")","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":8}},{"path":"src/main/resources/help/deadline.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"deadline\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Creates a time sensitive deadline task with a specified end date time.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"deadline \u003cdescription\u003e /by \u003cdatetime\u003e\" - creates a deadline task with description and \"/by\" a date time specified.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"General rules on date time format:","lastModifiedDate":"2023-09-24"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"1. Date and time input, will be saved accordingly. Past deadlines should be specified in this format, else Oreo will find next occurence of date time input.","lastModifiedDate":"2023-09-24"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"2. Date only, time will not be included in the saved task","lastModifiedDate":"2023-09-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"3. Time only, date will to next occurence of the task","lastModifiedDate":"2023-09-24"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"For accepted date time formats, input \"help datetime\".","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"\"deadline feed oreo /by 01/01/2023, 1800\" (creates a deadline task to feed oreo by 1st Jan 2023 6:00 PM)","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"\"deadline buy oreo toy /by 1 Jan\" (creates a deadline task to get oreo a toy by next occurrence of 1st Jan)","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"\"deadline bathe oreo /by 6:30pm\" (creates a deadline task to bathe oreo by next occurence of 6:30 PM)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":18}},{"path":"src/main/resources/help/delete.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"delete\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Deletes the task at the index specified. It can also be used to delete all tasks, similar to \"clear\".","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"delete \u003cindex\u003e\" - deletes task at the specified index. ","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"\"delete all\" - deletes all task that is in the list.","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"see above","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":11}},{"path":"src/main/resources/help/edit.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"edit\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"same as \"modify\" and \"update\"","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"Opens editing mode for the task specified by the index. Task specified will appear in the text field for user to modify the task. Modified task must follow the correct syntax when modifying.","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"User can type \"C\" or \"c\" to exit editing mode for the task and resume normal input.","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\"edit \u003cindex\u003e\" - opens editing mode on task specified in index and puts task in the text field for user to edit. User can make the necessary amends and input it to modify the specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"\"edit 1\" (task 1: TODO: play with oreo - command will enter editing mode on task 1 and display \"todo play with oreo\" in the text field for user to edit)","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"\"c\" exits editing mode without editing the task.","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":16}},{"path":"src/main/resources/help/event.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"event\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Creates a time sensitive event with a specified","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"start and end datetime.","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"\"event \u003cdescription\u003e /from \u003cdatetime\u003e /to \u003cdatetime\u003e\" - creates an event task with description, \"from\" date time and a \"to\" date time specified.","lastModifiedDate":"2023-09-24"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"General rules for date time format:","lastModifiedDate":"2023-09-24"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"1. If \"/from\" or \"/to\" has a time, both must have a time.","lastModifiedDate":"2023-09-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"2. If \"/to\" must be after \"/from\".","lastModifiedDate":"2023-09-24"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"3. Only date input will not include a time saved in the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"4. Only time input will set a date with reference to the `/to` time and give the next occurence of that duraiton.","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"5. For `time` to `date, time` input, the inferred date for `/from` will be the next occurence of that time instead of referencing the `/to` time.","lastModifiedDate":"2023-09-24"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"For accepted date time formats, type \"help datetime\" to see all accepted date time formats","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"\"event playtime /from 01/01/2023, 1200 /to 6:00pm\" (creates an event task for playtime on Jan 1 2023 from 12:00 PM - 6:00 PM)","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"\"event staycation /from 1 Jan, 1200 /to Jan 3, 12:00\" (creates an event task for staycation for next occurrence of Jan 1 at 12:00 PM to Jan 3 2023 12:00 PM for next occurence of the of date range)","lastModifiedDate":"2023-09-24"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"\"event walk oreo /from 17:00 /to 1800\" (creates an event task to walk oreo for the next occurence of 5:00 PM to 6:00 PM)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":21}},{"path":"src/main/resources/help/find.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"find\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Finds any relevant tasks with a description that matches the keyword specified.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"find \u003ckeyword\u003e\" - finds tasks with a description that matches the keyword and displays it.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"\"find oreo\" (displays all tasks with keyword of oreo)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/general.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"Hey seems like you need some help!","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"I am Oreo, your trusty canine friend :D","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"I can help you keep track of your tasks!","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"Here are some things you can do:","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"help - displays this message again","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"help \u003ccommand\u003e - learn more about a \u003ccommand\u003e ✦","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"todo - creates a todo task","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"deadline - creates a deadline task","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"event - creates an event task","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"list - list all task you have created","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"mark - marks task as done","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"unmark - unmarks task as incomplete","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"delete - deletes a task/deletes all task","lastModifiedDate":"2023-09-24"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"clear - deletes all task","lastModifiedDate":"2023-09-24"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"edit/modify/update - modifies a task","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"find - searches for a task","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"save - saves the current tasks to file","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"bye - exits the application","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"Try \"help datetime\" for accepted datetime formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"Try creating a task now! Type \"todo play with oreo\" or try \"help \u003ccommand\u003e\" to learn more about a specific command (e.g. \"help todo\").","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":25}},{"path":"src/main/resources/help/help.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"help\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Provide a simple guide for users.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"help\" - provide a list of all the commands and a brief description of what they do.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"\"help \u003ccommand\u003e\" - provide detailed description of the \u003ccommand\u003e specified, use this to learn more about the command and the proper syntax to use it.","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"\"help\" (shows list of all commands)","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"\"help delete\" (shows detailed explanation of delete command)","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":12}},{"path":"src/main/resources/help/list.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"list\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Displays the list of tasks you currently have. This includes the type of task, whether it is done and the date time (as specified).","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"list\" - Shows all the task that are recorded by the user.","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"see above","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/mark.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"mark\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Marks the task at the index specified as complete, or let the user know that it is already marked complete.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"mark \u003cindex\u003e\" - task at index becomes/stays complete. ","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\"mark 1\" (assuming task at position 1 on list is currently incomplete, it will be marked as complete)","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"\"mark 2\" (assuming task at position 2 on list is currently complete, it will remain complete)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":11}},{"path":"src/main/resources/help/modify.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"modify\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"same as \"edit\" and \"update\"","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"Opens editing mode for the task specified by the index. Task specified will appear in the text field for user to modify the task. modified task must follow the correct syntax when modifying.","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"User can type \"C\" or \"c\" to exit editing mode for the task and resume normal input.","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\"modify \u003cindex\u003e\" - opens editing mode on task specified in index and puts task in the text field for user to edit. User can make the necessary amends and input it to modify the specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"\"modify 1\" (task 1: TODO: play with oreo - command will enter editing mode on task 1 and display \"todo play with oreo\" in the text field for user to edit)","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"\"c\" exits editing mode wihout modifying the task","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":16}},{"path":"src/main/resources/help/save.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"save\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Saves all task as of current state to file while app continues to run.","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"save\" - saves current list of task to file.","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"see above","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/todo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"todo\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Creates a non-time sensitive task.","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"todo \u003cdescription\u003e\" - creates a todo task with the specified description.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"\"todo play with oreo\" (creates a todo task called \"play with oreo\").","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/unmark.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"unmark\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Unmarks the task at the index specified as incomplete, or let the user know that it is still incomplete.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"unmark \u003cindex\u003e\" - task at index becomes/stays incomplete (unchecked). ","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\"unmark 1\" (assuming task at position 1 on list is currently complete, it will be marked as incomplete)","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"\"unmark 2\" (assuming task at position 2 on list is currently incomplete, it will remain incomplete)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":11}},{"path":"src/main/resources/help/update.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"update\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"same as \"modify\" and \"edit\"","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"Opens editing mode for the task specified by the index. Task specified will appear in the text field for user to modify the task. modified task must follow the correct syntax when modifying.","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"User can type \"C\" or \"c\" to exit editing mode for the task and resume normal input.","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\"update \u003cindex\u003e\" - opens editing mode on task specified in index and puts task in the text field for user to edit. User can make the necessary amends and input it to modify the specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"\"update 1\" (task 1: TODO: play with oreo - command will enter editing mode on task 1 and display \"todo play with oreo\" in the textfield for user to edit)","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"\"c\" exits editing mode without editing the task.","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":16}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" minHeight\u003d\"-Infinity\" prefWidth\u003d\"423.0\" spacing\u003d\"5.0\" type\u003d\"HBox\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" \u003cjavafx.scene.layout.HBox fx:id\u003d\"speechBubble\" alignment\u003d\"CENTER_RIGHT\" depthTest\u003d\"ENABLE\" maxHeight\u003d\"340.0\" maxWidth\u003d\"1.7976931348623157E308\" minHeight\u003d\"-Infinity\" opacity\u003d\"0.8\" styleClass\u003d\"dmSans\" style\u003d\"-fx-background-radius: 1em; -fx-background-color: #6495ED;\"\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" \u003cLabel fx:id\u003d\"dialog\" minHeight\u003d\"20.0\" text\u003d\"Label\" textFill\u003d\"WHITE\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" \u003cInsets left\u003d\"5.0\" right\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" \u003cInsets bottom\u003d\"7.0\" top\u003d\"7.0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" \u003c/javafx.scene.layout.HBox\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"30.0\" fitWidth\u003d\"30.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" \u003cInsets top\u003d\"7.0\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" \u003c/HBox.margin\u003e\u003c/ImageView\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" \u003cInsets left\u003d\"5.0\" right\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":37}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.effect.ColorAdjust?\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"700.0\" prefWidth\u003d\"500.0\" style\u003d\"-fx-background-color: #737C88;\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"oreo.ui.MainWindow\"\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" fitToHeight\u003d\"true\" fitToWidth\u003d\"true\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" pannable\u003d\"true\" prefHeight\u003d\"700.0\" prefWidth\u003d\"500.0\" style\u003d\"-fx-background-radius: 0.5em;\" styleClass\u003d\"dmSans\" vvalue\u003d\"1.0\" AnchorPane.bottomAnchor\u003d\"0.0\" AnchorPane.topAnchor\u003d\"0.0\"\u003e","lastModifiedDate":"2023-09-23"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" maxHeight\u003d\"1.7976931348623157E308\" prefHeight\u003d\"700.0\" prefWidth\u003d\"400.0\" style\u003d\"-fx-background-color: #232E38; -fx-border-color: #28313D;\"\u003e","lastModifiedDate":"2023-09-23"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" \u003cInsets bottom\u003d\"35.0\" left\u003d\"10.0\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" \u003c/padding\u003e\u003c/VBox\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" \u003cTextField fx:id\u003d\"userInput\" cache\u003d\"true\" layoutX\u003d\"2.0\" layoutY\u003d\"567.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"30.0\" prefWidth\u003d\"470.0\" promptText\u003d\"Type something here...\" style\u003d\"-fx-background-radius: 1em;\" styleClass\u003d\"dmSans\" AnchorPane.bottomAnchor\u003d\"10.0\" AnchorPane.leftAnchor\u003d\"15.0\"\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" \u003ceffect\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" \u003cColorAdjust /\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" \u003c/effect\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" \u003cFont name\u003d\"DMSans-Medium\" size\u003d\"11.0\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" \u003c/font\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" \u003cInsets left\u003d\"10.0\" right\u003d\"35.0\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" \u003c/padding\u003e\u003c/TextField\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" \u003cTextField fx:id\u003d\"userInputEdit\" cache\u003d\"true\" layoutX\u003d\"2.0\" layoutY\u003d\"567.0\" onAction\u003d\"#handleEditInput\" prefHeight\u003d\"30.0\" prefWidth\u003d\"470.0\" promptText\u003d\"Type something here...\" style\u003d\"-fx-background-radius: 1em;\" styleClass\u003d\"dmSans\" visible\u003d\"false\" AnchorPane.bottomAnchor\u003d\"10.0\" AnchorPane.leftAnchor\u003d\"15.0\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" \u003cFont name\u003d\"DMSans-Medium\" size\u003d\"11.0\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" \u003c/font\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" \u003c/TextField\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" \u003cImageView fx:id\u003d\"editButton\" fitHeight\u003d\"150.0\" fitWidth\u003d\"24.0\" layoutX\u003d\"455.0\" layoutY\u003d\"663.0\" onMousePressed\u003d\"#handleEditInput\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" visible\u003d\"false\" AnchorPane.bottomAnchor\u003d\"13.0\"\u003e","lastModifiedDate":"2023-09-23"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" \u003cimage\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" \u003cImage url\u003d\"@../images/editbutton.png\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" \u003c/image\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" \u003cImageView fx:id\u003d\"sendButton\" accessibleRole\u003d\"BUTTON\" depthTest\u003d\"ENABLE\" fitHeight\u003d\"86.0\" fitWidth\u003d\"25.0\" layoutX\u003d\"456.0\" layoutY\u003d\"663.0\" onMousePressed\u003d\"#handleUserInput\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" AnchorPane.bottomAnchor\u003d\"13.0\"\u003e","lastModifiedDate":"2023-09-23"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" \u003cimage\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" \u003cImage url\u003d\"@../images/sendbutton.png\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" \u003c/image\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":49}},{"path":"src/test/java/oreo/command/AddCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.ToDo;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"public class AddCommandTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" public void execute_addCommandTodoToTaskList_success() {","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" String description \u003d \"read book\";","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" Scanner tokeniser \u003d new Scanner(description);","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" AddCommand ac \u003d new AddCommand(\"todo\", tokeniser);","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" ac.execute(tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" assertEquals(tasks.get(0).toString(),","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" new ToDo(\"read book\").toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" public void execute_addCommandInvalidInput_tasksNoChange() {","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" String description \u003d \"read book\";","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" Scanner tokeniser \u003d new Scanner(description);","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" AddCommand ac \u003d new AddCommand(\"abc\", tokeniser);","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" ac.execute(tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" assertEquals(0,","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" tasks.getNumberOfTask());","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"dloh2236":34}},{"path":"src/test/java/oreo/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"public class TaskTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" public void generateTask_generateTodoTask_success() throws IllegalCommandException,","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" assertEquals(new ToDo(\"read book\").toString(),","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" Task.generateTask(\"todo\", new Scanner(\"read book\")).toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public void generateTask_generateDeadlineTask_success() throws IllegalCommandException,","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" assertEquals(new Deadline(\"return book\", \"Sep 3 2023\", null).toString(),","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" Task.generateTask(\"deadline\",","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"return book /by 03/09/2023\")).toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" public void generateTask_generateEventTask_success() throws IllegalCommandException,","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" assertEquals(new Event(\"study at cafe\", \"Sep 3 2023\", \"3:00 PM\",","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" \"Sep 3 2023\", \"4:00 PM\").toString(),","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" Task.generateTask(\"event\",","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"study at cafe /from 03/09/2023, 1500 /to 03/09/2023, 1600\"))","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" .toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" public void generateTask_invalidCommand_exceptionThrown() throws IllegalDateTimeException {","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" assertEquals(0, Task.generateTask(\"abc\",","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"\")));","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" fail();","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e){","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" assertEquals(\"I don\u0027t think I can process an empty task\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" + \"do you want to try again?\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" public void generateTask_invalidDate_exceptionThrown() throws IllegalCommandException {","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" assertEquals(0, Task.generateTask(\"deadline\",","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"return book /by 2023-09-03\")));","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" fail();","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e){","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" assertEquals(\"Date or date format is invalid. Time or time format is invalid. \"","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" + \"If you are putting both date and time, you might have missed \\\", \\\" \"","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" + \"between the date and the time\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" \" (e.g. \\\"1 Jan, 5pm\\\").\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" \"Try \\\"help datetime\\\" to learn more about accepted date time formats\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" public void generateTask_invalidTime_exceptionThrown() throws IllegalCommandException {","lastModifiedDate":"2023-09-03"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" assertEquals(0, Task.generateTask(\"deadline\",","lastModifiedDate":"2023-09-03"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"return book /by 03/09/2023, 36pm\")));","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" fail();","lastModifiedDate":"2023-09-03"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e){","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" assertEquals(\"Time or time format is invalid. \", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" public void generateTask_invalidFromToTime_exceptionThrown() throws IllegalCommandException {","lastModifiedDate":"2023-09-03"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" assertEquals(0, Task.generateTask(\"event\",","lastModifiedDate":"2023-09-03"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"study /from 03/09/2023, 1600 /to 03/09/2023, 1400\")));","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" fail();","lastModifiedDate":"2023-09-03"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e){","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" assertEquals(\"Sorry but to time cannot be before from time\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" \"2:00 PM is before 4:00 PM\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"dloh2236":87}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"todo read book","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"deadline return book /by 03/09/2023 1400","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"deadline leave library /by 03/09/2023 1500","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"event dinner with friends /from 03/09/2023 1800 /to 03/09/2023 2100","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"mark 1","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"mark 1","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"mark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"unmark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"unmark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"delete 1","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"mark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"delete 2","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"mark 1","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"mark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"unmark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"delete 2","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"mark","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"unmark","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"todo","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"deadline","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":"event","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"deadline finish code /from 02/09/2023 2359","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":"event finish coding time /by 02/09/2023 2359","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":"event start coding /from 02/09/2023","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":"bye","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"dloh2236":30}}] +[{"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":"dloh2236"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-03"},{"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":"dloh2236"},"content":" ","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" mainClass.set(\"oreo.Launcher\")","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" archiveBaseName \u003d \"oreo\"","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":"checkstyle{","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"dloh2236":21,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"\u003cdiv class\u003d\"content\"\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"\u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":" \u003ca href\u003d\"https://github.com/dloh2236/ip\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":" \u003cimg src\u003d\"https://i.imgur.com/VLUORmp.png\" alt\u003d\"Logo\" width\u003d\"72\" height\u003d\"72\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":" \u003c/a\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\u003c/p\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":" \u003ch1 align\u003d\"center\"\u003eOreo\u003c/h1\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" \u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" \u003cb\u003eYour trusty canine friend for all your tasks! 🐶\u003c/b\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" \u003c/p\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"## Table of contents","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"- [About](#about)","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"- [Quick Start](#quick-start)","lastModifiedDate":"2023-09-24"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"- [Key Features](#key-features)","lastModifiedDate":"2023-09-24"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"- [Additional Features](#additional-features)","lastModifiedDate":"2023-09-24"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"- [Date Time Formats](#date-time-formats)","lastModifiedDate":"2023-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"## About","lastModifiedDate":"2023-09-24"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"Oreo is your trusty canine companion and personal assistant. She\u0027s always by your side, ready to assist. Oreo excels at","lastModifiedDate":"2023-09-24"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"keeping track of tasks and schedules, effortlessly organizing your day. Her boundless energy and unwavering loyalty","lastModifiedDate":"2023-09-24"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"make her the perfect partner in the chaos of your daily routine. Providing a comforting presence during late-night work","lastModifiedDate":"2023-09-24"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"sessions, Oreo will become an indispensable part of your life.","lastModifiedDate":"2023-09-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"###### Here is a preview:","lastModifiedDate":"2023-09-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":"\u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" \u003ca href\u003d\"https://github.com/dloh2236/ip\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" \u003cimg src\u003d","lastModifiedDate":"2023-09-24"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" \"https://raw.githubusercontent.com/nus-cs2103-AY2324S1/ip/61221a4e1829f430950f4c8166eeeff3700b57ef/docs/Ui.png\"","lastModifiedDate":"2023-09-24"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" alt\u003d\"Logo\" height\u003d\"500\"\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" \u003c/a\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":"\u003c/p\u003e","lastModifiedDate":"2023-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":"## Quick Start","lastModifiedDate":"2023-09-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":"Oreo v1.0.1 is available for download [here](https://github.com/dloh2236/ip/releases/tag/A-Releasev1.0.1).","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":"### System Pre-requisites","lastModifiedDate":"2023-09-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":"Make sure your system is running on Java 11, as this might affect your experience while using the chatbot.","lastModifiedDate":"2023-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":"\u003e ❗️**IMPORTANT** ","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":"\u003e For Mac users who are unable to run the JAR file, you will have to install Azul build of Open JDK 11 version","lastModifiedDate":"2023-09-24"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":"\u003e choose `JDK FX` version. The download link can be found ","lastModifiedDate":"2023-09-24"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":"\u003e [here](https://www.azul.com/downloads/?version\u003djava-11-lts\u0026os\u003dmacos\u0026architecture\u003darm-64-bit\u0026package\u003djdk-fx).","lastModifiedDate":"2023-09-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":"### Starting up Oreo","lastModifiedDate":"2023-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":"Simply put `oreo.jar` into your desired folder, open your terminal in that folder and enter:","lastModifiedDate":"2023-09-24"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":"`java -jar oreo.jar` and Oreo would be up and running to assist you!","lastModifiedDate":"2023-09-24"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":"\u003e Oreo will create a data storage file \"oreo.txt\" where all your tasks will be saved in","lastModifiedDate":"2023-09-24"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":"\u003e the program\u0027s own format. To ensure that your task is saved properly for your next run,","lastModifiedDate":"2023-09-24"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":"\u003e please do not tamper or move the file from its current location.","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":"You are all set! Start by saying `hi` to Oreo.","lastModifiedDate":"2023-09-24"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":"\u003e **If Oreo Fails to Start!**","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":"\u003e ","lastModifiedDate":"2023-09-26"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":"\u003e Try these:","lastModifiedDate":"2023-09-24"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":"\u003e 1. Make sure you are running Java 11.","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":"\u003e 1. If you are a Mac user see [System Pre-requisites](#system-pre-requisites).","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":"\u003e 1. Delete \"oreo.txt\" file if it exists in the same directory. The file is unfortunately corrupted.","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":"\u003e 1. Move `oreo.jar` to another folder and try again.","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":"## Key Features","lastModifiedDate":"2023-09-24"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":"Here are some of the key features that Oreo has!","lastModifiedDate":"2023-09-24"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":"### Help (`help`, `help \u003cCOMMAND\u003e`)","lastModifiedDate":"2023-09-24"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":"#### Help Commands","lastModifiedDate":"2023-09-24"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":"Provides in-app help, through in-app guides, to get you started in the app.","lastModifiedDate":"2023-09-24"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":"`help` - provides a list of all the commands and a brief description of what they do.","lastModifiedDate":"2023-09-24"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":"`help \u003cCOMMAND\u003e` - provides a detailed description of the specified `\u003cCOMMAND\u003e`, use this to learn more about the command and","lastModifiedDate":"2023-09-24"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":"it\u0027s proper syntax.","lastModifiedDate":"2023-09-24"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":"|:-------------:|---------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-26"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":"| `help` | \u003cspan style \u003d\u0027color: green;\u0027\u003eShows a list of all commands and brief descriptions of each command\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":"| `help delete` | \u003cspan style \u003d\u0027color: green;\u0027\u003eShows detailed explanation fo the delete command\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":"| `help me` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input of unknown command\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":"### Adding tasks (`todo`, `deadlines`, `events`)","lastModifiedDate":"2023-09-24"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":"#### Todo tasks","lastModifiedDate":"2023-09-24"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":"Creates a non-time-sensitive task.","lastModifiedDate":"2023-09-24"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":"`todo \u003cDESCRIPTION\u003e` - creates a task with the specified description.","lastModifiedDate":"2023-09-24"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":"|-----------------------|--------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":"| `todo play with oreo` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates a todo task called \"play with oreo\"\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":"| `todo` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input without a description\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":"\u003e Don\u0027t worry about making formatting errors when using Oreo. Oreo is helpful and is more than happy to provide precise","lastModifiedDate":"2023-09-24"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":"\u003e help when there is any improper syntax. Use in-app `help todo` for further guidance when using the app.","lastModifiedDate":"2023-09-24"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":"#### Deadline tasks","lastModifiedDate":"2023-09-24"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":"Creates a time-sensitive deadline task with a specified end date time.","lastModifiedDate":"2023-09-24"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":"`deadline \u003cDESCRIPTION\u003e /by \u003cDATETIME\u003e` - creates a deadline task with a description and \"/by\" a date time specified.","lastModifiedDate":"2023-09-24"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":"\u003e 1. If there is both date and time input, both will be saved accordingly. This is the recommended way to save past deadlines or else oreo will assume either the date or the year of the date time input. See [Date Time Assumptions](#date-time-assumptions).","lastModifiedDate":"2023-09-26"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":"\u003e 1. If there is a date-only input, time will not be included in the saved task.","lastModifiedDate":"2023-09-26"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":"\u003e 1. If there is a time-only input, the date will be set to the next occurrence of the time.","lastModifiedDate":"2023-09-26"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":"For more info on date time formats, see [Date Time Formats](#date-time-formats)","lastModifiedDate":"2023-09-24"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":"|--------------------------------------------|------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":"| `deadline feed oreo /by 01/01/2023, 1800` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates a deadline task to feed oreo by 1st Jan 2023 6:00 PM\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":"| `deadline buy oreo toy /by 1 Jan` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates a deadline task to get Oreo a toy by the next occurrence of 1st Jan\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":"| `deadline bathe oreo /by 6:30pm` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates a deadline task to bathe oreo by next occurrence of 6:30 PM\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":"| `deadline /by 6:30pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input without description\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":"| `deadline feed oreo /by` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input without date time input\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":"| `deadline feed oreo/by6:30pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input no whitespace _around_ `/by`\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":"| `deadline feed oreo /by 01/01/2023 6:30pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** date time input, missing comma\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":"\u003e Don\u0027t worry about making formatting errors when using Oreo. Oreo is helpful and is more than happy to provide precise","lastModifiedDate":"2023-09-24"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":"\u003e help when there is any improper syntax. Use in-app `help deadline` for further guidance when using the app. ","lastModifiedDate":"2023-09-24"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":"#### Event tasks","lastModifiedDate":"2023-09-24"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":"Creates a time-sensitive task with both a specified start and end date time.","lastModifiedDate":"2023-09-24"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":"`event \u003cDESCRIPTION\u003e /from \u003cDATETIME\u003e /to \u003cDATETIME\u003e` - creates an event task with description, `from` date time and a","lastModifiedDate":"2023-09-24"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":"`to` date time specified.","lastModifiedDate":"2023-09-24"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":"**Event `\u003cDATETIME\u003e` combinations accepted:**","lastModifiedDate":"2023-09-24"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":"| `/from` | `/to` |","lastModifiedDate":"2023-09-24"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":"|:--------------:|:------------:|","lastModifiedDate":"2023-09-24"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":"| `date, time` | `date, time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":"| `date, time` | `time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":"| `date` | `date` |","lastModifiedDate":"2023-09-24"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":"| `time` | `time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":"| `time` | `date, time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":165,"author":{"gitId":"dloh2236"},"content":"If this is too confusing, just do what makes sense!","lastModifiedDate":"2023-09-24"},{"lineNumber":166,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":167,"author":{"gitId":"dloh2236"},"content":"###### General Rules:","lastModifiedDate":"2023-09-24"},{"lineNumber":168,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":169,"author":{"gitId":"dloh2236"},"content":"\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; 1. If `/from` or `/to` has a time, both **must** have a time.","lastModifiedDate":"2023-09-26"},{"lineNumber":170,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":171,"author":{"gitId":"dloh2236"},"content":"\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; 2. `/to` must be after `/from`.","lastModifiedDate":"2023-09-26"},{"lineNumber":172,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":173,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":174,"author":{"gitId":"dloh2236"},"content":"\u003e 1. Only date input will not include a time saved in the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":175,"author":{"gitId":"dloh2236"},"content":"\u003e 1. Only time input will set a date with reference to the `/to` time and give the next occurrence of that duration.","lastModifiedDate":"2023-09-24"},{"lineNumber":176,"author":{"gitId":"dloh2236"},"content":"\u003e 1. For `time` to `date, time` input, the inferred date for `/from` will be the next occurrence of that time instead of","lastModifiedDate":"2023-09-26"},{"lineNumber":177,"author":{"gitId":"dloh2236"},"content":"\u003e referencing the `/to` time.","lastModifiedDate":"2023-09-24"},{"lineNumber":178,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":179,"author":{"gitId":"dloh2236"},"content":"For more info on date time formats, see [Date Time Formats](#date-time-formats).","lastModifiedDate":"2023-09-26"},{"lineNumber":180,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":181,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":182,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":183,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":184,"author":{"gitId":"dloh2236"},"content":"|-------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":185,"author":{"gitId":"dloh2236"},"content":"| `event playtime /from 01/01/2023, 1200 /to 6:00pm` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates an event task for playtime on Jan 1 2023 from 12:00 PM - 6:00 PM\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":186,"author":{"gitId":"dloh2236"},"content":"| `event staycation /from 1 Jan, 1200 /to Jan 3, 12:00` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates an event task for stay-cation for the next occurrence of Jan 1 at 12:00 PM to Jan 3 12:00 PM for next occurence of the of date range\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":187,"author":{"gitId":"dloh2236"},"content":"| `event birthday /from 30 oct /to 6 nov` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates an event task for Oreo\u0027s birthday from Oct 30 to Nov 6 without any time saved\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":188,"author":{"gitId":"dloh2236"},"content":"| `event walk oreo /from 17:00 /to 1800` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates an event task to walk oreo for the next occurrence of 5:00 PM to 6:00 PM\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":189,"author":{"gitId":"dloh2236"},"content":"| `event holiday /from 5pm /to 3 Jan, 12pm` | \u003cspan style\u003d\u0027color: green;\u0027\u003eCreates an event task for a holiday from the next occurrence of 5:00 PM to the next occurrence of Jan 3, 12pm\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":190,"author":{"gitId":"dloh2236"},"content":"| `event /from 5pm /to 3 Jan, 12pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input without description\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":191,"author":{"gitId":"dloh2236"},"content":"| `event holiday /from /to ` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input without date time input\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":192,"author":{"gitId":"dloh2236"},"content":"| `event holiday/from5pm/to3 Jan, 12pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input no whitespace _around_ `/from` and `/to`\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":193,"author":{"gitId":"dloh2236"},"content":"| `event holiday /from 1 Jan /to 3 Jan, 12pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input either `/from` or `/to` has time but the other does not\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":194,"author":{"gitId":"dloh2236"},"content":"| `event holiday /from 1 Jan 12pm /to 3 Jan, 12pm` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** date time input, missing comma\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":195,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":196,"author":{"gitId":"dloh2236"},"content":"\u003e Don\u0027t worry about making formatting errors when using Oreo. Oreo is helpful and is more than happy to provide precise","lastModifiedDate":"2023-09-24"},{"lineNumber":197,"author":{"gitId":"dloh2236"},"content":"\u003e help when there is any improper syntax. Use the in-app `help event` for further guidance when using the app.","lastModifiedDate":"2023-09-24"},{"lineNumber":198,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":199,"author":{"gitId":"dloh2236"},"content":"### Deleting Tasks (`delete`, `clear`)","lastModifiedDate":"2023-09-24"},{"lineNumber":200,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":201,"author":{"gitId":"dloh2236"},"content":"#### Delete Commands","lastModifiedDate":"2023-09-24"},{"lineNumber":202,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":203,"author":{"gitId":"dloh2236"},"content":"Deletes the task at the index specified. It can also be used to delete all tasks, similar to \"clear\".","lastModifiedDate":"2023-09-24"},{"lineNumber":204,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":205,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":206,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":207,"author":{"gitId":"dloh2236"},"content":"`delete \u003cINDEX\u003e` - deletes task at the specified index.","lastModifiedDate":"2023-09-24"},{"lineNumber":208,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":209,"author":{"gitId":"dloh2236"},"content":"`delete all` - deletes all tasks in the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":210,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":211,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTES** ","lastModifiedDate":"2023-09-26"},{"lineNumber":212,"author":{"gitId":"dloh2236"},"content":"\u003e `\u003cINDEX\u003e` refers to the position of the task in the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":213,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":214,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":215,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":216,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":217,"author":{"gitId":"dloh2236"},"content":"|:--------------:|--------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":218,"author":{"gitId":"dloh2236"},"content":"| `delete 1` | \u003cspan style \u003d\u0027color: green;\u0027\u003eDeletes task at index 1\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":219,"author":{"gitId":"dloh2236"},"content":"| `delete all` | \u003cspan style \u003d\u0027color: green;\u0027\u003eClears current task list\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":220,"author":{"gitId":"dloh2236"},"content":"| `delete -1` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input of index\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":221,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":222,"author":{"gitId":"dloh2236"},"content":"#### Clear Command","lastModifiedDate":"2023-09-24"},{"lineNumber":223,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":224,"author":{"gitId":"dloh2236"},"content":"Deletes all tasks in the list. Similar to \"delete all\".","lastModifiedDate":"2023-09-24"},{"lineNumber":225,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":226,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":227,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":228,"author":{"gitId":"dloh2236"},"content":"`clear` - deletes all tasks in the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":229,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":230,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":231,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":232,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":233,"author":{"gitId":"dloh2236"},"content":"|:---------:|------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":234,"author":{"gitId":"dloh2236"},"content":"| `clear` | \u003cspan style \u003d\u0027color: green;\u0027\u003eDeletes all task in the list\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":235,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":236,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":237,"author":{"gitId":"dloh2236"},"content":"\u003e `clear` ignores any other input after the command.","lastModifiedDate":"2023-09-24"},{"lineNumber":238,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":239,"author":{"gitId":"dloh2236"},"content":"### Viewing Tasks (`list`, `find`)","lastModifiedDate":"2023-09-24"},{"lineNumber":240,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":241,"author":{"gitId":"dloh2236"},"content":"#### List Command","lastModifiedDate":"2023-09-24"},{"lineNumber":242,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":243,"author":{"gitId":"dloh2236"},"content":"Displays the list of tasks you currently have. This includes the type of task, whether it is done and the date and time","lastModifiedDate":"2023-09-24"},{"lineNumber":244,"author":{"gitId":"dloh2236"},"content":"(as specified).","lastModifiedDate":"2023-09-24"},{"lineNumber":245,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":246,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":247,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":248,"author":{"gitId":"dloh2236"},"content":"`list` - shows all the tasks that are recorded by the user.","lastModifiedDate":"2023-09-24"},{"lineNumber":249,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":250,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":251,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":252,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":253,"author":{"gitId":"dloh2236"},"content":"|:---------:|---------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":254,"author":{"gitId":"dloh2236"},"content":"| `list` | \u003cspan style \u003d\u0027color: green;\u0027\u003eShows all task recorded by user\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":255,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":256,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":257,"author":{"gitId":"dloh2236"},"content":"\u003e `list` ignores any other input after the command.","lastModifiedDate":"2023-09-24"},{"lineNumber":258,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":259,"author":{"gitId":"dloh2236"},"content":"#### Find Command","lastModifiedDate":"2023-09-24"},{"lineNumber":260,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":261,"author":{"gitId":"dloh2236"},"content":"Finds any relevant tasks with a description that matches the keyword specified.","lastModifiedDate":"2023-09-24"},{"lineNumber":262,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":263,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":264,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":265,"author":{"gitId":"dloh2236"},"content":"`find \u003cKEYWORD\u003e` - finds tasks with a description that matches the keyword and displays it.","lastModifiedDate":"2023-09-24"},{"lineNumber":266,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":267,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":268,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":269,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":270,"author":{"gitId":"dloh2236"},"content":"|:-------------:|-----------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":271,"author":{"gitId":"dloh2236"},"content":"| `find oreo` | \u003cspan style \u003d\u0027color: green;\u0027\u003eDisplays all tasks with keyword of \"oreo\"\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":272,"author":{"gitId":"dloh2236"},"content":"| `find` | \u003cspan style \u003d\u0027color: red;\u0027\u003e**INVALID** input, no keyword defined\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":273,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":274,"author":{"gitId":"dloh2236"},"content":"### Modifying Task (`edit`, `update`, `modify`)","lastModifiedDate":"2023-09-24"},{"lineNumber":275,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":276,"author":{"gitId":"dloh2236"},"content":"#### Edit, Update and Modify Command (same format for all)","lastModifiedDate":"2023-09-24"},{"lineNumber":277,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":278,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":279,"author":{"gitId":"dloh2236"},"content":"\u003e They all follow the same syntax and have the same functions, `update`, and `modify` are just aliases for `edit`.","lastModifiedDate":"2023-09-24"},{"lineNumber":280,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":281,"author":{"gitId":"dloh2236"},"content":"Opens editing mode for the task specified by the index. The task specified will appear in the text field for the user to modify. Modified tasks must follow the correct syntax of adding a task.","lastModifiedDate":"2023-09-24"},{"lineNumber":282,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":283,"author":{"gitId":"dloh2236"},"content":"Users can type `C` or `c` to exit editing mode for the task and resume normal mode.","lastModifiedDate":"2023-09-24"},{"lineNumber":284,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":285,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":286,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":287,"author":{"gitId":"dloh2236"},"content":"`edit \u003cINDEX\u003e` - opens editing mode on the task specified in the index and puts the task in the text field for the user to edit.","lastModifiedDate":"2023-09-24"},{"lineNumber":288,"author":{"gitId":"dloh2236"},"content":"Users can make the necessary amends and input them to modify the specified task.","lastModifiedDate":"2023-09-24"},{"lineNumber":289,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":290,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":291,"author":{"gitId":"dloh2236"},"content":"\u003e `\u003cINDEX\u003e` refers to the position of the task in the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":292,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":293,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":294,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":295,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":296,"author":{"gitId":"dloh2236"},"content":"|:---------:|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":297,"author":{"gitId":"dloh2236"},"content":"| `edit 1` | \u003cspan style \u003d\u0027color: green;\u0027\u003eAssume task 1 is TODO: play with oreo. The command will enter editing mode on task 1 and display \"todo play with oreo\" in the text field for the user to edit\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":298,"author":{"gitId":"dloh2236"},"content":"| `c` / `C` | \u003cspan style \u003d\u0027color: green;\u0027\u003eExits editing mode without editing the task\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":299,"author":{"gitId":"dloh2236"},"content":"| `edit -1` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input of index\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":300,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":301,"author":{"gitId":"dloh2236"},"content":"After entering edit mode, you can modify the task in the text field however you want. The new task will be reflected in","lastModifiedDate":"2023-09-24"},{"lineNumber":302,"author":{"gitId":"dloh2236"},"content":"the same position in the list as the old task.","lastModifiedDate":"2023-09-24"},{"lineNumber":303,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":304,"author":{"gitId":"dloh2236"},"content":"\u003e ❗️**IMPORTANT** ","lastModifiedDate":"2023-09-26"},{"lineNumber":305,"author":{"gitId":"dloh2236"},"content":"\u003e After entering editing mode, you will realise a change in GUI to reflect the change in mode. As such, only adding task","lastModifiedDate":"2023-09-24"},{"lineNumber":306,"author":{"gitId":"dloh2236"},"content":"\u003e commands and `c` will do anything. Any other command will prompt the user to edit the previously selected task. To","lastModifiedDate":"2023-09-24"},{"lineNumber":307,"author":{"gitId":"dloh2236"},"content":"\u003e exit, type `c`.","lastModifiedDate":"2023-09-24"},{"lineNumber":308,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":309,"author":{"gitId":"dloh2236"},"content":"### Marking and Unmarking Task (`mark`, `unmark`)","lastModifiedDate":"2023-09-24"},{"lineNumber":310,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":311,"author":{"gitId":"dloh2236"},"content":"#### Mark Command and Unmark Command","lastModifiedDate":"2023-09-24"},{"lineNumber":312,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":313,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":314,"author":{"gitId":"dloh2236"},"content":"\u003e Both commands follow the same syntax. The only difference is they do the opposite of the other.","lastModifiedDate":"2023-09-24"},{"lineNumber":315,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":316,"author":{"gitId":"dloh2236"},"content":"**Mark:** Marks the task at the index specified as complete, or lets the user know that it is already marked complete.","lastModifiedDate":"2023-09-24"},{"lineNumber":317,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":318,"author":{"gitId":"dloh2236"},"content":"**Unmark:** Unmarks the task at the index specified as incomplete, or let the user know that it is still incomplete.","lastModifiedDate":"2023-09-24"},{"lineNumber":319,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":320,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":321,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":322,"author":{"gitId":"dloh2236"},"content":"`mark \u003cINDEX\u003e`/`unmark \u003cINDEX\u003e` - task at index becomes/stays complete (incomplete for unmark).","lastModifiedDate":"2023-09-24"},{"lineNumber":323,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":324,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":325,"author":{"gitId":"dloh2236"},"content":"\u003e \u003cINDEX\u003e refers to the position of the task in the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":326,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":327,"author":{"gitId":"dloh2236"},"content":"###### Example Usage (_shown only for mark_):","lastModifiedDate":"2023-09-24"},{"lineNumber":328,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":329,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":330,"author":{"gitId":"dloh2236"},"content":"|:---------:|-----------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":331,"author":{"gitId":"dloh2236"},"content":"| `mark 1` | \u003cspan style \u003d\u0027color: green;\u0027\u003eAssuming task at position 1 on list is currently incomplete, it will be marked complete\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":332,"author":{"gitId":"dloh2236"},"content":"| `mark 2` | \u003cspan style \u003d\u0027color: green;\u0027\u003eAssuming task at position 2 on list is currently complete, it will remain complete\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":333,"author":{"gitId":"dloh2236"},"content":"| `mark -1` | \u003cspan style\u003d\u0027color: red;\u0027\u003e**INVALID** input of index\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":334,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":335,"author":{"gitId":"dloh2236"},"content":"## Additional Features","lastModifiedDate":"2023-09-24"},{"lineNumber":336,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":337,"author":{"gitId":"dloh2236"},"content":"### Saving Tasks (`save`)","lastModifiedDate":"2023-09-24"},{"lineNumber":338,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":339,"author":{"gitId":"dloh2236"},"content":"#### Save Command","lastModifiedDate":"2023-09-24"},{"lineNumber":340,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":341,"author":{"gitId":"dloh2236"},"content":"Saves all tasks as of current state to file while the app continues to run.","lastModifiedDate":"2023-09-24"},{"lineNumber":342,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":343,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":344,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":345,"author":{"gitId":"dloh2236"},"content":"`save` - saves the current list of tasks to file.","lastModifiedDate":"2023-09-24"},{"lineNumber":346,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":347,"author":{"gitId":"dloh2236"},"content":"\u003e ❗️**IMPORTANT** ","lastModifiedDate":"2023-09-26"},{"lineNumber":348,"author":{"gitId":"dloh2236"},"content":"\u003e Task will only save upon the `bye` command or `save` command. Please save your task list regularly to avoid losing it.","lastModifiedDate":"2023-09-24"},{"lineNumber":349,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":350,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":351,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":352,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":353,"author":{"gitId":"dloh2236"},"content":"|:-------:|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":354,"author":{"gitId":"dloh2236"},"content":"| `save` | \u003cspan style \u003d\u0027color: green;\u0027\u003eSaves current list of task to file\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":355,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":356,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":357,"author":{"gitId":"dloh2236"},"content":"\u003e`save` ignores any other input after the command.","lastModifiedDate":"2023-09-24"},{"lineNumber":358,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":359,"author":{"gitId":"dloh2236"},"content":"### Exiting the Application (`bye`)","lastModifiedDate":"2023-09-24"},{"lineNumber":360,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":361,"author":{"gitId":"dloh2236"},"content":"#### Bye Command","lastModifiedDate":"2023-09-24"},{"lineNumber":362,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":363,"author":{"gitId":"dloh2236"},"content":"Closes the application and saves all tasks the user has inputted.","lastModifiedDate":"2023-09-24"},{"lineNumber":364,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":365,"author":{"gitId":"dloh2236"},"content":"###### Format:","lastModifiedDate":"2023-09-24"},{"lineNumber":366,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":367,"author":{"gitId":"dloh2236"},"content":"`bye` - closes the application and saves all tasks.","lastModifiedDate":"2023-09-24"},{"lineNumber":368,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":369,"author":{"gitId":"dloh2236"},"content":"\u003e ❗️**IMPORTANT** ","lastModifiedDate":"2023-09-26"},{"lineNumber":370,"author":{"gitId":"dloh2236"},"content":"\u003e Task will only save upon the `bye` command or `save` command. Please save your task list regularly to avoid losing your","lastModifiedDate":"2023-09-24"},{"lineNumber":371,"author":{"gitId":"dloh2236"},"content":"\u003e task list.","lastModifiedDate":"2023-09-24"},{"lineNumber":372,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":373,"author":{"gitId":"dloh2236"},"content":"###### Example Usage:","lastModifiedDate":"2023-09-24"},{"lineNumber":374,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":375,"author":{"gitId":"dloh2236"},"content":"| Command | What it does |","lastModifiedDate":"2023-09-24"},{"lineNumber":376,"author":{"gitId":"dloh2236"},"content":"|:-------:|----------------------------------------------------------------------------------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":377,"author":{"gitId":"dloh2236"},"content":"| `bye` | \u003cspan style \u003d\u0027color: green;\u0027\u003eCloses application and saves all tasks user has inputted\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":378,"author":{"gitId":"dloh2236"},"content":"| `bye!` | \u003cspan style \u003d\u0027color: red;\u0027\u003eInvalid character appended to `bye`\u003c/span\u003e |","lastModifiedDate":"2023-09-24"},{"lineNumber":379,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":380,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":381,"author":{"gitId":"dloh2236"},"content":"\u003e`bye` ignores any other input after the command. However, appending any characters to bye will be invalid and an","lastModifiedDate":"2023-09-24"},{"lineNumber":382,"author":{"gitId":"dloh2236"},"content":"\u003e unrecognised command.","lastModifiedDate":"2023-09-24"},{"lineNumber":383,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":384,"author":{"gitId":"dloh2236"},"content":"### Miscellaneous","lastModifiedDate":"2023-09-24"},{"lineNumber":385,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":386,"author":{"gitId":"dloh2236"},"content":"#### `Hello` / `hi`","lastModifiedDate":"2023-09-24"},{"lineNumber":387,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":388,"author":{"gitId":"dloh2236"},"content":"This input is not a command! Rather we have recognised that first-time users are likely to type this input when they","lastModifiedDate":"2023-09-24"},{"lineNumber":389,"author":{"gitId":"dloh2236"},"content":"first start using the app. Hence, greeting Oreo prompts her to greet you back and offer assistance. ","lastModifiedDate":"2023-09-24"},{"lineNumber":390,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":391,"author":{"gitId":"dloh2236"},"content":"Do say hello to Oreo!","lastModifiedDate":"2023-09-24"},{"lineNumber":392,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":393,"author":{"gitId":"dloh2236"},"content":"#### Other features","lastModifiedDate":"2023-09-24"},{"lineNumber":394,"author":{"gitId":"dloh2236"},"content":"There are some hidden features in Oreo that we won\u0027t tell you! Play around with her a while more to find these hidden","lastModifiedDate":"2023-09-24"},{"lineNumber":395,"author":{"gitId":"dloh2236"},"content":"easter eggs we have planted in the app! ","lastModifiedDate":"2023-09-24"},{"lineNumber":396,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":397,"author":{"gitId":"dloh2236"},"content":"## Date Time Formats","lastModifiedDate":"2023-09-24"},{"lineNumber":398,"author":{"gitId":"dloh2236"},"content":"One of the features of Oreo is the extensive date time formats it accepts. However, due to the wide variety of date time","lastModifiedDate":"2023-09-24"},{"lineNumber":399,"author":{"gitId":"dloh2236"},"content":"formats and combinations that Oreo accepts, there are certain rules that need to be followed. This is to ensure the date","lastModifiedDate":"2023-09-24"},{"lineNumber":400,"author":{"gitId":"dloh2236"},"content":"time is recorded properly and for the users to input their desired date time easily.","lastModifiedDate":"2023-09-24"},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":402,"author":{"gitId":"dloh2236"},"content":"###### Accepted Date Formats:","lastModifiedDate":"2023-09-24"},{"lineNumber":403,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":404,"author":{"gitId":"dloh2236"},"content":"| Format | Examples | Remarks |","lastModifiedDate":"2023-09-24"},{"lineNumber":405,"author":{"gitId":"dloh2236"},"content":"|:------------:|----------------------------|--------------------|","lastModifiedDate":"2023-09-24"},{"lineNumber":406,"author":{"gitId":"dloh2236"},"content":"| `d/M/yyyy` | `1/1/2023`, `01/12/2023` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":407,"author":{"gitId":"dloh2236"},"content":"| `d-M-yyyy` | `1-1-2023`, `01-12-2023` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":408,"author":{"gitId":"dloh2236"},"content":"| `d/M/yy` | `1/1/23`, `01/12/12` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":409,"author":{"gitId":"dloh2236"},"content":"| `d-M-yy` | `1-1-23`, `01-12-12` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":410,"author":{"gitId":"dloh2236"},"content":"| `MMM d yyyy` | `Jan 1 2023`, `jan 1 2023` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":411,"author":{"gitId":"dloh2236"},"content":"| `MMM d yy` | `Jan 1 23`, `jan 1 23` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":412,"author":{"gitId":"dloh2236"},"content":"| `d MMM yyyy` | `1 Jan 2023`, `1 jan 2023` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":413,"author":{"gitId":"dloh2236"},"content":"| `d MMM yy` | `Jan 1 2023`, `1 jan 23` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":414,"author":{"gitId":"dloh2236"},"content":"| `yyyy/M/d` | `2023/1/1`, `2023/12/01` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":415,"author":{"gitId":"dloh2236"},"content":"| `yy/M/d` | `23/1/1`, `23/12/01` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":416,"author":{"gitId":"dloh2236"},"content":"| `yyyy-M-d` | `2023-1-1`, `2023-12-01` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":417,"author":{"gitId":"dloh2236"},"content":"| `yy-M-d` | `23-1-1`, `23-12-01` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":418,"author":{"gitId":"dloh2236"},"content":"| `d/M` | `1/1`, `01/12` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":419,"author":{"gitId":"dloh2236"},"content":"| `d-M` | `1-1`, `01-12` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":420,"author":{"gitId":"dloh2236"},"content":"| `MMM d` | `Jan 1`, `jan 1` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":421,"author":{"gitId":"dloh2236"},"content":"| `d MMM` | `1 Jan`, `jan 1` | Not case sensitive |","lastModifiedDate":"2023-09-24"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":423,"author":{"gitId":"dloh2236"},"content":"###### Accepted Time Formats:","lastModifiedDate":"2023-09-24"},{"lineNumber":424,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":425,"author":{"gitId":"dloh2236"},"content":"| Format | Examples | Remarks |","lastModifiedDate":"2023-09-24"},{"lineNumber":426,"author":{"gitId":"dloh2236"},"content":"|:--------:|----------------------|--------------------|","lastModifiedDate":"2023-09-26"},{"lineNumber":427,"author":{"gitId":"dloh2236"},"content":"| `HHmm` | `1800`, `0600` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":428,"author":{"gitId":"dloh2236"},"content":"| `h a` | `6 pm`, `6 PM` | |","lastModifiedDate":"2023-09-26"},{"lineNumber":429,"author":{"gitId":"dloh2236"},"content":"| `ha` | `6pm`, `6PM` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":430,"author":{"gitId":"dloh2236"},"content":"| `HH:mm` | `18:00`, `06:00` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":431,"author":{"gitId":"dloh2236"},"content":"| `h:mm a` | `6:00 PM`, `6:00 am` | Not case sensitive |","lastModifiedDate":"2023-09-26"},{"lineNumber":432,"author":{"gitId":"dloh2236"},"content":"| `h:mma` | `6:00pm`, `6:00AM` | Not case sensitive |","lastModifiedDate":"2023-09-26"},{"lineNumber":433,"author":{"gitId":"dloh2236"},"content":"| `HH.mm` | `18.00`, `06.00` | |","lastModifiedDate":"2023-09-24"},{"lineNumber":434,"author":{"gitId":"dloh2236"},"content":"| `h.mm a` | `6.00 pm`, `6.00 AM` | Not case sensitive |","lastModifiedDate":"2023-09-26"},{"lineNumber":435,"author":{"gitId":"dloh2236"},"content":"| `h.mma` | `6.00PM`, `6.00am` | Not case sensitive |","lastModifiedDate":"2023-09-26"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":437,"author":{"gitId":"dloh2236"},"content":"###### Using Date and Time Together:","lastModifiedDate":"2023-09-24"},{"lineNumber":438,"author":{"gitId":"dloh2236"},"content":"When using date and time together, you must separate the date and time with `,\u003cspace\u003e`.","lastModifiedDate":"2023-09-24"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":440,"author":{"gitId":"dloh2236"},"content":"✅ **A GOOD EXAMPLE**","lastModifiedDate":"2023-09-26"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":442,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":443,"author":{"gitId":"dloh2236"},"content":"1 Jan 2023, 6pm","lastModifiedDate":"2023-09-24"},{"lineNumber":444,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":445,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":446,"author":{"gitId":"dloh2236"},"content":"You may use any combination of date and time formats when doing this, even within the same command.","lastModifiedDate":"2023-09-24"},{"lineNumber":447,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":448,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":449,"author":{"gitId":"dloh2236"},"content":"event playtime /from 1 jan, 1800 /to 03/1, 10pm // is valid as well","lastModifiedDate":"2023-09-24"},{"lineNumber":450,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":451,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":452,"author":{"gitId":"dloh2236"},"content":"However, the purpose of accepting such varied date time formats is not for this use but to cater to varied","lastModifiedDate":"2023-09-24"},{"lineNumber":453,"author":{"gitId":"dloh2236"},"content":"preference of date time formats. ","lastModifiedDate":"2023-09-24"},{"lineNumber":454,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":455,"author":{"gitId":"dloh2236"},"content":"❌ **BAD EXAMPLES**","lastModifiedDate":"2023-09-26"},{"lineNumber":456,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":457,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":458,"author":{"gitId":"dloh2236"},"content":"1 /0 1/2023, 43pm // not valid date and time, unecessary whitespaces","lastModifiedDate":"2023-09-24"},{"lineNumber":459,"author":{"gitId":"dloh2236"},"content":"1 Jan 2023 6pm // valid date and time but missing comma","lastModifiedDate":"2023-09-24"},{"lineNumber":460,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":461,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":462,"author":{"gitId":"dloh2236"},"content":"##### Date Time Assumptions","lastModifiedDate":"2023-09-24"},{"lineNumber":463,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":464,"author":{"gitId":"dloh2236"},"content":"Oreo allows input of date-only and time-only commands when adding deadlines and events. Data inputs may or may not include a year. As such, there are certain underlying assumptions that Oreo will make based on the entered-in date time. Understanding this would enable you to use the date time expansive date time format effectively.","lastModifiedDate":"2023-09-24"},{"lineNumber":465,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":466,"author":{"gitId":"dloh2236"},"content":"##### Time-Only Inputs","lastModifiedDate":"2023-09-24"},{"lineNumber":467,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":468,"author":{"gitId":"dloh2236"},"content":"Oreo will set the date of the task to the next occurrence of the input time. We have implemented it in such as way because","lastModifiedDate":"2023-09-24"},{"lineNumber":469,"author":{"gitId":"dloh2236"},"content":"Oreo is a chat bot that keeps track of future tasks for you. Hence, an input without a date would assume that you are","lastModifiedDate":"2023-09-24"},{"lineNumber":470,"author":{"gitId":"dloh2236"},"content":"adding the task for the future.","lastModifiedDate":"2023-09-24"},{"lineNumber":471,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":472,"author":{"gitId":"dloh2236"},"content":"\u003e ### For example:","lastModifiedDate":"2023-09-26"},{"lineNumber":473,"author":{"gitId":"dloh2236"},"content":"\u003e ","lastModifiedDate":"2023-09-26"},{"lineNumber":474,"author":{"gitId":"dloh2236"},"content":"\u003e **Assume the date and time now is 1st January 2023, 12pm.**","lastModifiedDate":"2023-09-26"},{"lineNumber":475,"author":{"gitId":"dloh2236"},"content":"\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":476,"author":{"gitId":"dloh2236"},"content":"\u003e ```","lastModifiedDate":"2023-09-26"},{"lineNumber":477,"author":{"gitId":"dloh2236"},"content":"\u003e deadline give oreo breakfast /by 9am // deadline will be set for 2nd January 2023, 9am.","lastModifiedDate":"2023-09-26"},{"lineNumber":478,"author":{"gitId":"dloh2236"},"content":"\u003e deadline give oreo dinner /by 6pm //deadline will be set for 1st January 2023, 6pm.","lastModifiedDate":"2023-09-26"},{"lineNumber":479,"author":{"gitId":"dloh2236"},"content":"\u003e ```","lastModifiedDate":"2023-09-26"},{"lineNumber":480,"author":{"gitId":"dloh2236"},"content":"\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":481,"author":{"gitId":"dloh2236"},"content":"\u003e\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":482,"author":{"gitId":"dloh2236"},"content":"\u003e There is a **special** case for **event** tasks!","lastModifiedDate":"2023-09-24"},{"lineNumber":483,"author":{"gitId":"dloh2236"},"content":"\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":484,"author":{"gitId":"dloh2236"},"content":"\u003e **Assume the date and time now is 1st January 2023, 12pm.**","lastModifiedDate":"2023-09-26"},{"lineNumber":485,"author":{"gitId":"dloh2236"},"content":"\u003e ***from `time` to `time` inputs (Reference `/to` time - next occurrence of `/to` time)***","lastModifiedDate":"2023-09-26"},{"lineNumber":486,"author":{"gitId":"dloh2236"},"content":"\u003e ","lastModifiedDate":"2023-09-26"},{"lineNumber":487,"author":{"gitId":"dloh2236"},"content":"\u003e **Case 1:** ***from `time` to `time` inputs (Reference `/to` time - next occurrence of `/to` time)***","lastModifiedDate":"2023-09-26"},{"lineNumber":488,"author":{"gitId":"dloh2236"},"content":"\u003e ","lastModifiedDate":"2023-09-26"},{"lineNumber":489,"author":{"gitId":"dloh2236"},"content":"\u003e ```","lastModifiedDate":"2023-09-26"},{"lineNumber":490,"author":{"gitId":"dloh2236"},"content":"\u003e event playtime /from 11am /to 3pm //event will be set for 1st January 2023, 11-3pm","lastModifiedDate":"2023-09-26"},{"lineNumber":491,"author":{"gitId":"dloh2236"},"content":"\u003e event bathe /from 9am /to 9:30am //event will be set for 2nd January 2023, 11-3pm","lastModifiedDate":"2023-09-26"},{"lineNumber":492,"author":{"gitId":"dloh2236"},"content":"\u003e ```","lastModifiedDate":"2023-09-26"},{"lineNumber":493,"author":{"gitId":"dloh2236"},"content":"\u003e ","lastModifiedDate":"2023-09-26"},{"lineNumber":494,"author":{"gitId":"dloh2236"},"content":"\u003e **Case 2:** ***from `date` `time` to `time` (Reference `/from` date)***","lastModifiedDate":"2023-09-26"},{"lineNumber":495,"author":{"gitId":"dloh2236"},"content":"\u003e ","lastModifiedDate":"2023-09-26"},{"lineNumber":496,"author":{"gitId":"dloh2236"},"content":"\u003e ```","lastModifiedDate":"2023-09-26"},{"lineNumber":497,"author":{"gitId":"dloh2236"},"content":"\u003e event playtime /from 1 Jan, 11am /to 3pm // event will be set for 1st January 2023, 11-3pm","lastModifiedDate":"2023-09-26"},{"lineNumber":498,"author":{"gitId":"dloh2236"},"content":"\u003e ```","lastModifiedDate":"2023-09-26"},{"lineNumber":499,"author":{"gitId":"dloh2236"},"content":"\u003e ","lastModifiedDate":"2023-09-26"},{"lineNumber":500,"author":{"gitId":"dloh2236"},"content":"\u003e **Case 3:** ***from `time` to `date` `time` (Reference `/from` time)***","lastModifiedDate":"2023-09-26"},{"lineNumber":501,"author":{"gitId":"dloh2236"},"content":"\u003e ","lastModifiedDate":"2023-09-26"},{"lineNumber":502,"author":{"gitId":"dloh2236"},"content":"\u003e ```","lastModifiedDate":"2023-09-26"},{"lineNumber":503,"author":{"gitId":"dloh2236"},"content":"\u003e event oreo\u0027s special days /from 9am /to 31 Dec, 11:59pm // event will be set for 2nd Jan 2023, 9am to 31st Dec 11:59pm","lastModifiedDate":"2023-09-26"},{"lineNumber":504,"author":{"gitId":"dloh2236"},"content":"\u003e ```","lastModifiedDate":"2023-09-26"},{"lineNumber":505,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":506,"author":{"gitId":"dloh2236"},"content":"For more information about event date time formats, see [Using Date and Time in Events](#using-date-and-time-in-events).","lastModifiedDate":"2023-09-24"},{"lineNumber":507,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":508,"author":{"gitId":"dloh2236"},"content":"##### Date-Only Inputs","lastModifiedDate":"2023-09-24"},{"lineNumber":509,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":510,"author":{"gitId":"dloh2236"},"content":"In this case, Oreo will assume these are whole-day tasks and will not set a time for these tasks hence, only the date is","lastModifiedDate":"2023-09-24"},{"lineNumber":511,"author":{"gitId":"dloh2236"},"content":"saved.","lastModifiedDate":"2023-09-24"},{"lineNumber":512,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":513,"author":{"gitId":"dloh2236"},"content":"##### Date Without Year Inputs","lastModifiedDate":"2023-09-24"},{"lineNumber":514,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":515,"author":{"gitId":"dloh2236"},"content":"This is where things get tricky! Similar to time-only inputs, Oreo will set the year of the date to the next occurrence","lastModifiedDate":"2023-09-24"},{"lineNumber":516,"author":{"gitId":"dloh2236"},"content":"of the date or next occurrence of the date specified in `/to` for events.","lastModifiedDate":"2023-09-24"},{"lineNumber":517,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":518,"author":{"gitId":"dloh2236"},"content":"\u003e ### For example:","lastModifiedDate":"2023-09-26"},{"lineNumber":519,"author":{"gitId":"dloh2236"},"content":"\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":520,"author":{"gitId":"dloh2236"},"content":"\u003e **Assume the date and time now is 1st January 2023**","lastModifiedDate":"2023-09-26"},{"lineNumber":521,"author":{"gitId":"dloh2236"},"content":"\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":522,"author":{"gitId":"dloh2236"},"content":"\u003e ```","lastModifiedDate":"2023-09-26"},{"lineNumber":523,"author":{"gitId":"dloh2236"},"content":"\u003e deadline new years\u0027 eve /by 31 Dec // deadline will be set for 31st December 2024.","lastModifiedDate":"2023-09-26"},{"lineNumber":524,"author":{"gitId":"dloh2236"},"content":"\u003e event christmas /from 25 Dec /to 5 Jan // the event will be set for 25th December 2022 to 5th January 2023.","lastModifiedDate":"2023-09-26"},{"lineNumber":525,"author":{"gitId":"dloh2236"},"content":"\u003e event playtime /from 9am /to 1st Jan, 5pm // INVALID! As 9am will be read independently and be assumed to be on 2nd January.","lastModifiedDate":"2023-09-26"},{"lineNumber":526,"author":{"gitId":"dloh2236"},"content":"\u003e ```","lastModifiedDate":"2023-09-26"},{"lineNumber":527,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":528,"author":{"gitId":"dloh2236"},"content":"##### Using Date and Time in Events","lastModifiedDate":"2023-09-24"},{"lineNumber":529,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":530,"author":{"gitId":"dloh2236"},"content":"You should have realised that date time for events can be quite tricky due to the permutations of date time that are","lastModifiedDate":"2023-09-24"},{"lineNumber":531,"author":{"gitId":"dloh2236"},"content":"possible. There are **9** to be exact. Due to this, we have to limit these permutations that make sense. Otherwise, Oreo would be confused","lastModifiedDate":"2023-09-24"},{"lineNumber":532,"author":{"gitId":"dloh2236"},"content":"as to what date and time to set. ","lastModifiedDate":"2023-09-24"},{"lineNumber":533,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":534,"author":{"gitId":"dloh2236"},"content":"You can read [here](#event-tasks) to see the combinations and learn more about the event task,","lastModifiedDate":"2023-09-26"},{"lineNumber":535,"author":{"gitId":"dloh2236"},"content":"or you can see it below with more additional information:","lastModifiedDate":"2023-09-26"},{"lineNumber":536,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":537,"author":{"gitId":"dloh2236"},"content":"| `/from` | `/to` |","lastModifiedDate":"2023-09-24"},{"lineNumber":538,"author":{"gitId":"dloh2236"},"content":"|:--------------:|:------------:|","lastModifiedDate":"2023-09-24"},{"lineNumber":539,"author":{"gitId":"dloh2236"},"content":"| `date, time` | `date, time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":540,"author":{"gitId":"dloh2236"},"content":"| `date, time` | `time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":541,"author":{"gitId":"dloh2236"},"content":"| `date` | `date` |","lastModifiedDate":"2023-09-24"},{"lineNumber":542,"author":{"gitId":"dloh2236"},"content":"| `time` | `time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":543,"author":{"gitId":"dloh2236"},"content":"| `time` | `date, time` |","lastModifiedDate":"2023-09-24"},{"lineNumber":544,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":545,"author":{"gitId":"dloh2236"},"content":"If this is too confusing, just do what makes sense!","lastModifiedDate":"2023-09-24"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":547,"author":{"gitId":"dloh2236"},"content":"**General Rules**:","lastModifiedDate":"2023-09-24"},{"lineNumber":548,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":549,"author":{"gitId":"dloh2236"},"content":"1. If `/from` or `/to` have a time, both **must** have a time.","lastModifiedDate":"2023-09-24"},{"lineNumber":550,"author":{"gitId":"dloh2236"},"content":"1. `/to` **must** be after `/from`.","lastModifiedDate":"2023-09-24"},{"lineNumber":551,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":552,"author":{"gitId":"dloh2236"},"content":"**Easy Formatting:**","lastModifiedDate":"2023-09-24"},{"lineNumber":553,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":554,"author":{"gitId":"dloh2236"},"content":"For ease of inputting date time for same-day events. We have negated the requirement of requiring a date in `/to` if a","lastModifiedDate":"2023-09-24"},{"lineNumber":555,"author":{"gitId":"dloh2236"},"content":"date is specified in `/from`. Oreo will take the date specified in `/from` and apply it to the date time in \u0027/to\u0027. We did this as we would usually present events as such: *Dinner on 1st January, 6 - 8pm*.","lastModifiedDate":"2023-09-24"},{"lineNumber":556,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":557,"author":{"gitId":"dloh2236"},"content":"Example of how it looks like when adding such an event:","lastModifiedDate":"2023-09-24"},{"lineNumber":558,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":559,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":560,"author":{"gitId":"dloh2236"},"content":"event Dinner /from 1 Jan, 6pm /to 8pm","lastModifiedDate":"2023-09-24"},{"lineNumber":561,"author":{"gitId":"dloh2236"},"content":"```","lastModifiedDate":"2023-09-24"},{"lineNumber":562,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":563,"author":{"gitId":"dloh2236"},"content":"This also helps reduce the redundancy of commands.","lastModifiedDate":"2023-09-24"},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":565,"author":{"gitId":"dloh2236"},"content":"\u003e 🏷 **NOTE** ","lastModifiedDate":"2023-09-26"},{"lineNumber":566,"author":{"gitId":"dloh2236"},"content":"\u003e #### Additional Notes:","lastModifiedDate":"2023-09-24"},{"lineNumber":567,"author":{"gitId":"dloh2236"},"content":"\u003e ","lastModifiedDate":"2023-09-26"},{"lineNumber":568,"author":{"gitId":"dloh2236"},"content":"\u003e- Only date input will not include a time saved in the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":569,"author":{"gitId":"dloh2236"},"content":"\u003e- Only time input will set a date with reference to the `/to` time and give the next occurrence of that duration.","lastModifiedDate":"2023-09-24"},{"lineNumber":570,"author":{"gitId":"dloh2236"},"content":"\u003e- For `time` to `date, time` input, the inferred date for `/from` will be the next occurrence of that time instead of ","lastModifiedDate":"2023-09-24"},{"lineNumber":571,"author":{"gitId":"dloh2236"},"content":"\u003ereferencing the `/to` time.","lastModifiedDate":"2023-09-24"},{"lineNumber":572,"author":{"gitId":"dloh2236"},"content":"\u003e-","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"dloh2236":547,"-":25}},{"path":"src/main/java/oreo/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"public class Launcher {","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":13}},{"path":"src/main/java/oreo/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-23"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.paint.Paint;","lastModifiedDate":"2023-09-23"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.MainWindow;","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" scene.getStylesheets().add(getClass().getResource(\"/styles.css\").toExternalForm());","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" MainWindow gui \u003d fxmlLoader.getController();","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" Oreo oreo \u003d new Oreo(\"./oreo.txt\",","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" gui);","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" stage.setTitle(\"Oreo\");","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" stage.getIcons().add(new Image(\"/images/icon.png\"));","lastModifiedDate":"2023-09-23"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" stage.setMinHeight(700);","lastModifiedDate":"2023-09-23"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" stage.setMinWidth(500);","lastModifiedDate":"2023-09-23"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" stage.setMaxWidth(500);","lastModifiedDate":"2023-09-23"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" stage.show();","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":40}},{"path":"src/main/java/oreo/Oreo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.command.EditCommand;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.command.Command;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import oreo.storage.Storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.MainWindow;","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * This class implements the chatbot Oreo.","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"public class Oreo {","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" /** The GUI of the application */","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" private MainWindow ui;","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" /** Storage class that handles read write to files */","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" private Storage storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" /** Stores all tasks that are inputted */","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" /** Cache for Oreo to store data when transiting between scenes */","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" private ArrayList\u003cObject\u003e cache;","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" * Constructor of Oreo chatbot.","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" * @param filePath file path to where saved file is and where saved","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" * task will be written to file for next start up","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" * of chatbot.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" public Oreo(String filePath, MainWindow gui) {","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" this.ui \u003d gui;","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" gui.setOreo(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" this.cache \u003d new ArrayList();","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" gui.startUp();","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" * Handles the start-up process of oreo.","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException If user inputs a command that is not accepted.","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" * @throws FileNotFoundException If filepath cannot be found.","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" public void startUp() throws FileNotFoundException, IllegalDateTimeException {","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" storage.readFile(tasks); // reads loaded file","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" * Clears saved tasks and stored files if stored file is corrupt and unreadable.","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" public void clearTaskAndFile() {","lastModifiedDate":"2023-09-07"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" storage.clearFile();","lastModifiedDate":"2023-09-07"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" tasks.clearAll();","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" * Generates greeting message for user.","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" * @return greet message.","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" public String greet() {","lastModifiedDate":"2023-09-07"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" String greetMessage \u003d \"Woof! I\u0027m Oreo! How may I help you?\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" if (tasks.getNumberOfTask() !\u003d 0) {","lastModifiedDate":"2023-09-07"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" return greetMessage","lastModifiedDate":"2023-09-07"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" + \"Welcome back! \"","lastModifiedDate":"2023-09-07"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" + tasks.list();","lastModifiedDate":"2023-09-07"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-07"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" return greetMessage;","lastModifiedDate":"2023-09-07"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" * Returns the bye message to user.","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" * @return bye message.","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" public String sayBye() {","lastModifiedDate":"2023-09-07"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" return \"I will be sad to see you go! bye!\\n\";","lastModifiedDate":"2023-09-07"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" * Executes given command.","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" * @param command command to be executed.","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" * @return String response from executed command.","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" public String execute(Command command) {","lastModifiedDate":"2023-09-07"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":" return command.execute(tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" * Executes command in Edit Mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" * @param command command to be executed.","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" * @return String response from executed command.","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException wrong date time input format.","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(Command command) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-18"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" String input \u003d (String) getCache(0); // gets the cached input from user","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":" Task oldTask \u003d (Task) getCache(1); // get the cached task to edit","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":" int id \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2023-09-18"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":" return command.executeEditMode(tasks, id - 1, oldTask);","lastModifiedDate":"2023-09-18"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":" * Gets task upon edit command input.","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":" * @param editCommand","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":" * @return Task specified by edit command.","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":" public Task getTask(EditCommand editCommand) {","lastModifiedDate":"2023-09-18"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":" return editCommand.getEditTask();","lastModifiedDate":"2023-09-18"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":" * Cache an Object to an ArrayList.","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":" * @param toCache object to cache.","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":" public void cache(Object toCache) {","lastModifiedDate":"2023-09-18"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":" cache.add(toCache);","lastModifiedDate":"2023-09-18"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":" * Gets cached object at specified index.","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":" * @param index of ArrayList.","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":" * @return Object stored in cache.","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":" public Object getCache(int index) {","lastModifiedDate":"2023-09-18"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":" return cache.get(index);","lastModifiedDate":"2023-09-18"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":" * Clears the cache.","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":" public void clearCache() {","lastModifiedDate":"2023-09-18"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":" cache.clear();","lastModifiedDate":"2023-09-18"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":" * Runs closing process of application.","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":" * @throws IOException","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":" public void closeProcess() throws IOException {","lastModifiedDate":"2023-09-07"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":" storage.writeFile(tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"dloh2236":164,"-":1}},{"path":"src/main/java/oreo/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.Formatter;","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" private String command;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * Constructor for AddCommand.","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * @param command todo, deadline or event.","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * @param tokeniser rest of user input.","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public AddCommand(String command, Scanner tokeniser) {","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) throws IllegalCommandException,","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" Task newTask \u003d Task.generateTask(command, tokeniser);","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" tasks.modifyTask(index, newTask);","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" return \"Modified this: \\n\"","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(oldTask.toString(), 2)","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" + \"to this: \\n\"","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(newTask.toString(), 2);","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" Task newTask \u003d Task.generateTask(command, tokeniser);","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" return \"Gotchu! noted down: \\n\"","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(newTask.toString(), 2)","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" + \"Now you have \" + tasks.getNumberOfTask()","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" + \" tasks in the list!\";","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":58}},{"path":"src/main/java/oreo/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" return \"\";","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":24}},{"path":"src/main/java/oreo/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" * Implements abstract command class, parent class of specific commands","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * Executes the command.","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * @param tasks Tasklist of the chatbot.","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * @return Response from executing command on tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public abstract String execute(TaskList tasks);","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" * Executes the command while in edit mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" * @param tasks task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" * @param index index of relevant task in edit mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" * @param oldTask old task of edit mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * @return Response from executing command on tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException Invalid date time formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" public abstract String executeEditMode(TaskList tasks, int index, Task oldTask)","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" throws IllegalDateTimeException;","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" * Checks if command is bye.","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" * @return true if command is ByeCommand.","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" return this instanceof ByeCommand;","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" * Checks if command is edit.","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" * @return true if command is EditCommand.","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" public boolean isEdit() {","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" return this instanceof EditCommand;","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" * Checks if command is ExitMode.","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" * @return true if command is ExitModeCommand.","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" public boolean isExitMode() {","lastModifiedDate":"2023-09-18"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" return this instanceof ExitModeCommand;","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" * Utility method to check if str is an integer input for commands that","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" * take in index input.","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" * @param str input","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" * @return true if integer, false if not","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" public boolean isInteger(String str) {","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" if (str \u003d\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" int length \u003d str.length();","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" if (length \u003d\u003d 0) {","lastModifiedDate":"2023-09-21"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" int i \u003d 0;","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" if (str.charAt(0) \u003d\u003d \u0027-\u0027) {","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" if (length \u003d\u003d 1) {","lastModifiedDate":"2023-09-21"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" i \u003d 1;","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" for (; i \u003c length; i++) {","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" char c \u003d str.charAt(i);","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" if (c \u003c \u00270\u0027 || c \u003e \u00279\u0027) {","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" return true;","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":92}},{"path":"src/main/java/oreo/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.Formatter;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" private String command;","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * Constructor for Delete Command.","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @param command command","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * @param tokeniser rest of command","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public DeleteCommand(String command, Scanner tokeniser) {","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" * Acts on tasks with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" * @param tasks task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * @return Response upon acting on task with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException invalid command formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" public String actOn(TaskList tasks) throws IllegalCommandException {","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" if (command.equals(\"clear\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" tasks.clearAll();","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" return \"Cleared all your task for you! Play time?\";","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" // nothing specified after command","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that without specifying a task number\");","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" // specified content is not an integer","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" String content \u003d tokeniser.next();","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" if (!isInteger(content)) {","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" if (content.equals(\"all\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" tasks.clearAll();","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" return \"Cleared all your task for you! Play time?\";","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... try a number instead\");","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" // if number of task does not exist","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" int id \u003d Integer.parseInt(content);","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" if (id \u003e tasks.getNumberOfTask() || id \u003c\u003d 0) {","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... this task does not exist :(\");","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" Task removedTask \u003d tasks.remove(id - 1);","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" assert removedTask !\u003d null: \"removed task must exist\";","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" String message \u003d \"Happily scratched this off your list:\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(removedTask.toString(), 2) + \"Now you have \"","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" + tasks.getNumberOfTask() + \" tasks in the list!\";","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" if (tasks.isAllComplete()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" message +\u003d tasks.list();","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" return message;","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" return actOn(tasks);","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":85}},{"path":"src/main/java/oreo/command/EditCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-18"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-18"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.Formatter;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2023-09-18"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" private String command;","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" private Task taskToEdit;","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" public EditCommand(String command, Scanner tokeniser) {","lastModifiedDate":"2023-09-18"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" public EditCommand() {","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" * Gets task to edit.","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * @return Task to edit.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" public Task getEditTask() {","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" return taskToEdit;","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" * Acts on tasks with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" * @param tasks task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" * @return Response upon acting on task with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException invalid command formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" public Task actOn(TaskList tasks) {","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" // nothing specified after command","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that without specifying a task number\");","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" // specified content is not an integer","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" String content \u003d tokeniser.next();","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" if (!isInteger(content)) {","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... try a number instead\");","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" // if number of task does not exist","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" int id \u003d Integer.parseInt(content);","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" if (id \u003e tasks.getNumberOfTask() || id \u003c\u003d 0) {","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... this task does not exist :(\");","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" return tasks.get(id - 1);","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" return \"Seems like you can\u0027t do that edit!\\n\"","lastModifiedDate":"2023-09-18"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" + \"You are currently modifying this task: \\n\"","lastModifiedDate":"2023-09-18"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(oldTask.toString(), 2)","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" + \"Type \\\"C\\\" to cancel\";","lastModifiedDate":"2023-09-18"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) throws IllegalCommandException {","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" this.taskToEdit \u003d actOn(tasks);","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" return \"You are currently modifying this task: \\n\"","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" + Formatter.indentLineBy(taskToEdit.toString(), 2)","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" + \"Type \\\"C\\\" to cancel\";","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-18"}],"authorContributionMap":{"dloh2236":81}},{"path":"src/main/java/oreo/command/EmptyCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"public class EmptyCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" return \"uhhh what???\";","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":23}},{"path":"src/main/java/oreo/command/ExitModeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-18"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-18"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"public class ExitModeCommand extends Command {","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) throws IllegalCommandException {","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" return \"I guess not! What else can I help you with?\";","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-18"}],"authorContributionMap":{"dloh2236":24}},{"path":"src/main/java/oreo/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" * Constructor for FindCommand","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * @param tokeniser rest of the user input","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" public FindCommand(Scanner tokeniser) {","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" * Acts on tasks with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" * @param tasks task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" * @return Response upon acting on task with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException invalid command formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" public String actOn(TaskList tasks) throws IllegalCommandException{","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that without specifying a keyword\");","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" String keyword \u003d tokeniser.next();","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" TaskList toPrint \u003d new TaskList();","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c tasks.getNumberOfTask(); i++) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" Task ref \u003d tasks.get(i);","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" if (ref.contains(keyword)) {","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" toPrint.add(ref);","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" return toPrint.listResults(keyword);","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" return actOn(tasks);","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"dloh2236":62}},{"path":"src/main/java/oreo/command/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.io.*;","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" private String command;","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" private final String GENERAL_MESSAGE \u003d getGeneralMessage();","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * Gets general help message from resource folder.","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" * @return general message.","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" private String getGeneralMessage() {","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" try (InputStream in \u003d getClass().getResourceAsStream(\"/help/general.txt\");","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" BufferedReader reader \u003d new BufferedReader(new InputStreamReader(in))) {","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" String line;","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" stringBuilder.append(line).append(\"\\n\");","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" return \"oh no something went wrong\";","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" public HelpCommand(String command, Scanner tokeniser) {","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" * Gets help message from resource folder based on the command input by user.","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" * @param content command user wants to get help for.","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" * @return Help for specified command.","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" public String getHelpMessage(String content) throws IllegalCommandException {","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" try (InputStream in \u003d getClass().getResourceAsStream(\"/help/\" + content + \".txt\");","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" BufferedReader reader \u003d new BufferedReader(new InputStreamReader(in))) {","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" String line;","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" stringBuilder.append(line).append(\"\\n\");","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" } catch (IOException | NullPointerException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"help you with that! That isn\u0027t a valid command. Try \\\"help\\\" to see \"","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" + \"the list of available commands.\");","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" switch (command) {","lastModifiedDate":"2023-09-21"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" case \"help\":","lastModifiedDate":"2023-09-21"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" return GENERAL_MESSAGE;","lastModifiedDate":"2023-09-21"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-21"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" return \"Hi there! I am Oreo! Seems like you need help!\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" \"type \\\"help\\\" to learn more!\";","lastModifiedDate":"2023-09-21"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" String content \u003d tokeniser.next();","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" return getHelpMessage(content);","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-21"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-21"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":98}},{"path":"src/main/java/oreo/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-16"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-16"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-16"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"public class InvalidCommand extends Command{","lastModifiedDate":"2023-09-16"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-16"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) throws IllegalCommandException {","lastModifiedDate":"2023-09-16"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" return new IllegalCommandException(\"do that, type \\\"help\\\" for help\").getMessage();","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-16"}],"authorContributionMap":{"dloh2236":24}},{"path":"src/main/java/oreo/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" return tasks.list();","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":23}},{"path":"src/main/java/oreo/command/MarkUnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"public class MarkUnmarkCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" private String command;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" private Scanner tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public MarkUnmarkCommand(String command, Scanner tokeniser) {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" this.command \u003d command;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" this.tokeniser \u003d tokeniser;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * Acts on tasks with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * @param tasks task list.","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" * @return Response upon acting on task with command.","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException invalid command formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" public String actOn(TaskList tasks) throws IllegalCommandException {","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" // nothing specified after command","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that without specifying a task number\");","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" // specified content is not an integer","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" String content \u003d tokeniser.next();","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" if (!isInteger(content)) {","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" if (content.equals(\"all\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" return command.equals(\"mark\") ? tasks.markAll() : tasks.unmarkAll();","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... try a number instead\");","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" // if number of task does not exist","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" int id \u003d Integer.parseInt(content);","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" if (id \u003e tasks.getNumberOfTask() || id \u003c\u003d 0) {","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that... this task does not exist :(\");","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" // checks which mark command it is","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" switch (command) {","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" case \"mark\":","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" String message \u003d tasks.markDone(id - 1);","lastModifiedDate":"2023-09-21"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" return tasks.isAllComplete() ? message + tasks.list()","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" : message;","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" case \"unmark\":","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" return tasks.markNotDone(id - 1);","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"help mark or unmark that\");","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) {","lastModifiedDate":"2023-09-18"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-18"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-07"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" return actOn(tasks);","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-07"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":75}},{"path":"src/main/java/oreo/command/SaveCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.io.File;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"public class SaveCommand extends Command {","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" private final String filePath \u003d \"./oreo.txt\";","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" public String execute(TaskList tasks) {","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" new FileWriter(filePath, false).close();","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" FileWriter fw \u003d null;","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" int numberOfTasks \u003d tasks.getNumberOfTask();","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c numberOfTasks; i++) {","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" String data \u003d tasks.get(i).writeToFile();","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" fw.write(data);","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" fw.close();","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" return \"Thoroughly remembered all your task for you! I think I deserve a belly rub!\";","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" public String executeEditMode(TaskList tasks, int index, Task oldTask) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" return execute(tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":46}},{"path":"src/main/java/oreo/datetime/TimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.datetime;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import java.util.Locale;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * Implements class that handles parsing of time input.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"public class TimeParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public static LocalDate today \u003d LocalDate.now();","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" public static LocalTime timeNow \u003d LocalTime.now();","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" * Parses date input for display.","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" * @param input date input.","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" * @return output date.","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if invalid format.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" private static String parseDateOut(String input) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" String[] formatsWithYear \u003d {\"d-M-yyyy\", \"d-M-yy\", \"d/M/yyyy\", \"d/M/yy\",","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" \"MMM d yyyy\", \"MMM d yy\", \"d MMM yyyy\", \"d MMM yy\", \"yyyy-M-d\", \"yy-M-d\"","lastModifiedDate":"2023-09-24"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" };","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" String[] formatsWithoutYear \u003d {\"d/M\", \"d-M\", \"MMM d\", \"d MMM\"};","lastModifiedDate":"2023-09-24"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" if (input.contains(\" \")) {","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" input \u003d formatDateWithWords(input);","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" for (String format : formatsWithYear) {","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(format);","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" LocalDate date \u003d LocalDate.parse(input, dtf);","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" // try other formats","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" for (String format : formatsWithoutYear) {","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" .appendPattern(format)","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" .parseDefaulting(ChronoField.YEAR, today.getYear())","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" .toFormatter(Locale.ENGLISH);","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" LocalDate date \u003d LocalDate.parse(input, dtf);","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" // try other formats","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" // if failed all formats throw exception","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"Date or date format is invalid\");","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" * Formats date input with \"MMM\" format to the first letter to be upper case and","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" * the rest, smaller case. For example, sep -\u003e Sep to enable the parse to recognise the month.","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" * This allows input to not case-sensitive.","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" * @param date date input from user.","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" * @return date in corrected format (if there contains words).","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" public static String formatDateWithWords(String date) {","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" // Split the input into words","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" String[] words \u003d date.split(\"\\\\s+\");","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" for (String word : words) {","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" if (!word.isEmpty()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" // Capitalize the first letter and convert the rest to lowercase","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" String capitalizedWord \u003d Character.toUpperCase(word.charAt(0)) +","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" word.substring(1).toLowerCase();","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" result.append(capitalizedWord).append(\" \");","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" return result.toString().trim(); // Remove trailing space","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" * Parses date for file data.","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":" * @param input date as displayed.","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" * @return output date for file data.","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if invalid format.","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" public static String parseDateForFile(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter format \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" LocalDate date \u003d LocalDate.parse(input, format);","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" return date.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":" * Parses time input for display.","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" * @param input time input.","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" * @return output time.","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if invalid format.","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":" public static String parseTimeOut(String input) throws IllegalDateTimeException{","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" String[] formatsWithoutEnglish \u003d {","lastModifiedDate":"2023-09-25"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" \"HHmm\", \"HH:mm\", \"HH.mm\"","lastModifiedDate":"2023-09-25"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" };","lastModifiedDate":"2023-09-25"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":" String[] formatsWithEnglish \u003d {","lastModifiedDate":"2023-09-25"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":" \"h a\", \"ha\", \"h:mm a\", \"h:mma\", \"h.mm a\", \"h.mma\"","lastModifiedDate":"2023-09-25"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":" };","lastModifiedDate":"2023-09-21"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":" for (String format : formatsWithoutEnglish) {","lastModifiedDate":"2023-09-25"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(format);","lastModifiedDate":"2023-09-21"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":" LocalTime date \u003d LocalTime.parse(input, dtf);","lastModifiedDate":"2023-09-21"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":" return date.format(DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":" // try other formats","lastModifiedDate":"2023-09-21"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":" for (String format : formatsWithEnglish) {","lastModifiedDate":"2023-09-25"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-25"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d new DateTimeFormatterBuilder()","lastModifiedDate":"2023-09-25"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":" .parseCaseInsensitive()","lastModifiedDate":"2023-09-25"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":" .appendPattern(format)","lastModifiedDate":"2023-09-25"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":" .toFormatter(Locale.ENGLISH);","lastModifiedDate":"2023-09-25"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":"// DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(format);","lastModifiedDate":"2023-09-25"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":" LocalTime date \u003d LocalTime.parse(input, dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":" return date.format(DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2023-09-25"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-25"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":" // try other formats","lastModifiedDate":"2023-09-25"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":" // if failed all formats throw exception","lastModifiedDate":"2023-09-21"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"Time or time format is invalid\");","lastModifiedDate":"2023-09-21"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":" * Parses time for file data.","lastModifiedDate":"2023-09-25"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":" * @param input time input.","lastModifiedDate":"2023-09-25"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":" * @return output time.","lastModifiedDate":"2023-09-25"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if invalid format.","lastModifiedDate":"2023-09-25"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":" public static String parseTimeForFile(String input) {","lastModifiedDate":"2023-08-31"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":" if (input \u003d\u003d null) {","lastModifiedDate":"2023-08-31"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":" return \"\";","lastModifiedDate":"2023-08-31"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter format \u003d DateTimeFormatter.ofPattern(\"h:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":" LocalTime time \u003d LocalTime.parse(input, format);","lastModifiedDate":"2023-08-31"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":" return time.format(DateTimeFormatter.ofPattern(\"HHmm\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":165,"author":{"gitId":"dloh2236"},"content":" * Parses input for display.","lastModifiedDate":"2023-09-25"},{"lineNumber":166,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":167,"author":{"gitId":"dloh2236"},"content":" * @param input date time input by user.","lastModifiedDate":"2023-09-25"},{"lineNumber":168,"author":{"gitId":"dloh2236"},"content":" * @return date time format for display.","lastModifiedDate":"2023-09-25"},{"lineNumber":169,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException invalid format.","lastModifiedDate":"2023-09-25"},{"lineNumber":170,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":171,"author":{"gitId":"dloh2236"},"content":" public static String[] parseInputOut(String input) throws IllegalDateTimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"dloh2236"},"content":" String[] out \u003d new String[2];","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"dloh2236"},"content":" String[] dateTime \u003d input.split(\", \");","lastModifiedDate":"2023-09-21"},{"lineNumber":174,"author":{"gitId":"dloh2236"},"content":" String exceptionMessage \u003d \"\";","lastModifiedDate":"2023-09-21"},{"lineNumber":175,"author":{"gitId":"dloh2236"},"content":" boolean firstElementNotDate \u003d false;","lastModifiedDate":"2023-09-21"},{"lineNumber":176,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":177,"author":{"gitId":"dloh2236"},"content":" String missingComma \u003d \"If you are putting both date and time, you might have missed \\\", \\\" \"","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"dloh2236"},"content":" + \"between the date and the time\\n (e.g. \\\"1 Jan, 5pm\\\").\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"dloh2236"},"content":" + \"Try \\\"help datetime\\\" to learn more about accepted date time formats\";","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"dloh2236"},"content":" if (dateTime.length \u003d\u003d 2) {","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"dloh2236"},"content":" out[0] \u003d parseDateOut(dateTime[0]);","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"dloh2236"},"content":" exceptionMessage +\u003d (e.getMessage() + \". \");","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":188,"author":{"gitId":"dloh2236"},"content":" out[1] \u003d parseTimeOut(dateTime[1]);","lastModifiedDate":"2023-09-22"},{"lineNumber":189,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":190,"author":{"gitId":"dloh2236"},"content":" exceptionMessage +\u003d (e.getMessage() + \". \");","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":192,"author":{"gitId":"dloh2236"},"content":" if (exceptionMessage.isEmpty()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":193,"author":{"gitId":"dloh2236"},"content":" return out;","lastModifiedDate":"2023-09-22"},{"lineNumber":194,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-22"},{"lineNumber":195,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(exceptionMessage);","lastModifiedDate":"2023-09-22"},{"lineNumber":196,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":197,"author":{"gitId":"dloh2236"},"content":" } else if (dateTime.length \u003d\u003d 1){","lastModifiedDate":"2023-09-22"},{"lineNumber":198,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":199,"author":{"gitId":"dloh2236"},"content":" out[0] \u003d parseDateOut(dateTime[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":201,"author":{"gitId":"dloh2236"},"content":" exceptionMessage +\u003d (e.getMessage() + \". \");","lastModifiedDate":"2023-09-22"},{"lineNumber":202,"author":{"gitId":"dloh2236"},"content":" firstElementNotDate \u003d true;","lastModifiedDate":"2023-09-21"},{"lineNumber":203,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":204,"author":{"gitId":"dloh2236"},"content":" if (firstElementNotDate) {","lastModifiedDate":"2023-09-21"},{"lineNumber":205,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":206,"author":{"gitId":"dloh2236"},"content":" out[1] \u003d parseTimeOut(dateTime[0]);","lastModifiedDate":"2023-09-21"},{"lineNumber":207,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e) {","lastModifiedDate":"2023-09-21"},{"lineNumber":208,"author":{"gitId":"dloh2236"},"content":" exceptionMessage +\u003d (e.getMessage() + \". \");","lastModifiedDate":"2023-09-22"},{"lineNumber":209,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":210,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":211,"author":{"gitId":"dloh2236"},"content":" if (out[0] \u003d\u003d null \u0026\u0026 out[1] \u003d\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":212,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(exceptionMessage +\u003d missingComma);","lastModifiedDate":"2023-09-22"},{"lineNumber":213,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-22"},{"lineNumber":214,"author":{"gitId":"dloh2236"},"content":" return out;","lastModifiedDate":"2023-08-31"},{"lineNumber":215,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":216,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-22"},{"lineNumber":217,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"Not sure what you did there but I couldn\u0027t understand \"","lastModifiedDate":"2023-09-22"},{"lineNumber":218,"author":{"gitId":"dloh2236"},"content":" + \"your date time input\");","lastModifiedDate":"2023-09-22"},{"lineNumber":219,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":220,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":221,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":222,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":223,"author":{"gitId":"dloh2236"},"content":" * Checks if to date is after from date.","lastModifiedDate":"2023-09-25"},{"lineNumber":224,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":225,"author":{"gitId":"dloh2236"},"content":" * @param fromDate start date.","lastModifiedDate":"2023-09-25"},{"lineNumber":226,"author":{"gitId":"dloh2236"},"content":" * @param toDate end date.","lastModifiedDate":"2023-09-25"},{"lineNumber":227,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if end date is before start date.","lastModifiedDate":"2023-09-25"},{"lineNumber":228,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":229,"author":{"gitId":"dloh2236"},"content":" public static void checkValidEventDate(String fromDate, String toDate) throws IllegalDateTimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"dloh2236"},"content":" LocalDate from \u003d LocalDate.parse(fromDate,","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"dloh2236"},"content":" LocalDate to \u003d LocalDate.parse(toDate,","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"dloh2236"},"content":" if (to.isBefore(from)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":235,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"to date cannot be earlier than from date\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":236,"author":{"gitId":"dloh2236"},"content":" + toDate + \" is before \" + fromDate);","lastModifiedDate":"2023-09-21"},{"lineNumber":237,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":238,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":239,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":240,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":241,"author":{"gitId":"dloh2236"},"content":" * Checks if to time is after from time.","lastModifiedDate":"2023-09-25"},{"lineNumber":242,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":243,"author":{"gitId":"dloh2236"},"content":" * @param fromTime start time.","lastModifiedDate":"2023-09-25"},{"lineNumber":244,"author":{"gitId":"dloh2236"},"content":" * @param toTime end time.","lastModifiedDate":"2023-09-25"},{"lineNumber":245,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException if end time is before start time in the same day.","lastModifiedDate":"2023-09-25"},{"lineNumber":246,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":247,"author":{"gitId":"dloh2236"},"content":" public static void checkValidEventTime(String fromTime, String toTime) throws IllegalDateTimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":248,"author":{"gitId":"dloh2236"},"content":" LocalTime from \u003d LocalTime.parse(fromTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":249,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":250,"author":{"gitId":"dloh2236"},"content":" LocalTime to \u003d LocalTime.parse(toTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":251,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2023-08-31"},{"lineNumber":252,"author":{"gitId":"dloh2236"},"content":" if (to.isBefore(from)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":253,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"Sorry but to time cannot be before from time\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":254,"author":{"gitId":"dloh2236"},"content":" + toTime + \" is before \" + fromTime);","lastModifiedDate":"2023-09-21"},{"lineNumber":255,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":256,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":257,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":258,"author":{"gitId":"dloh2236"},"content":" public static String getTodayString() {","lastModifiedDate":"2023-09-21"},{"lineNumber":259,"author":{"gitId":"dloh2236"},"content":" return today.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-21"},{"lineNumber":260,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":261,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":262,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":263,"author":{"gitId":"dloh2236"},"content":" * Gets the next occurrence of the date for a specified time.","lastModifiedDate":"2023-09-25"},{"lineNumber":264,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":265,"author":{"gitId":"dloh2236"},"content":" * @param timeString specified time to check.","lastModifiedDate":"2023-09-25"},{"lineNumber":266,"author":{"gitId":"dloh2236"},"content":" * @return Date of next occurrence of time.","lastModifiedDate":"2023-09-25"},{"lineNumber":267,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":268,"author":{"gitId":"dloh2236"},"content":" public static String getNextDateOfTime(String timeString) {","lastModifiedDate":"2023-09-25"},{"lineNumber":269,"author":{"gitId":"dloh2236"},"content":" LocalTime time \u003d LocalTime.parse(timeString,","lastModifiedDate":"2023-09-22"},{"lineNumber":270,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":271,"author":{"gitId":"dloh2236"},"content":" if (time.isBefore(timeNow)) {","lastModifiedDate":"2023-09-22"},{"lineNumber":272,"author":{"gitId":"dloh2236"},"content":" return today.plusDays(1).format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":273,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":274,"author":{"gitId":"dloh2236"},"content":" return getTodayString();","lastModifiedDate":"2023-09-22"},{"lineNumber":275,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":276,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":277,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":278,"author":{"gitId":"dloh2236"},"content":" * Gets the next occurrence of date considering both start and end time.","lastModifiedDate":"2023-09-25"},{"lineNumber":279,"author":{"gitId":"dloh2236"},"content":" * Used for the logic for event task.","lastModifiedDate":"2023-09-25"},{"lineNumber":280,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":281,"author":{"gitId":"dloh2236"},"content":" * @param startTimeString From time from event.","lastModifiedDate":"2023-09-25"},{"lineNumber":282,"author":{"gitId":"dloh2236"},"content":" * @param endtimeString To time from event.","lastModifiedDate":"2023-09-25"},{"lineNumber":283,"author":{"gitId":"dloh2236"},"content":" * @param endDateString To date from event","lastModifiedDate":"2023-09-25"},{"lineNumber":284,"author":{"gitId":"dloh2236"},"content":" * @return Date of next occurrence.","lastModifiedDate":"2023-09-25"},{"lineNumber":285,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":286,"author":{"gitId":"dloh2236"},"content":" public static String getNextDateOfTime(String startTimeString, String endtimeString,String endDateString) {","lastModifiedDate":"2023-09-25"},{"lineNumber":287,"author":{"gitId":"dloh2236"},"content":" if (endDateString \u003d\u003d null) {","lastModifiedDate":"2023-09-22"},{"lineNumber":288,"author":{"gitId":"dloh2236"},"content":" return getNextDateOfTime(endtimeString);","lastModifiedDate":"2023-09-22"},{"lineNumber":289,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-22"},{"lineNumber":290,"author":{"gitId":"dloh2236"},"content":" return getNextDateOfTime(startTimeString);","lastModifiedDate":"2023-09-22"},{"lineNumber":291,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":292,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":293,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":294,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":295,"author":{"gitId":"dloh2236"},"content":" * Returns the date with year set to the next occurrence w.r.t the current date","lastModifiedDate":"2023-09-25"},{"lineNumber":296,"author":{"gitId":"dloh2236"},"content":" * Used for deadline task logic and event end time","lastModifiedDate":"2023-09-25"},{"lineNumber":297,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":298,"author":{"gitId":"dloh2236"},"content":" * @param dateString","lastModifiedDate":"2023-09-25"},{"lineNumber":299,"author":{"gitId":"dloh2236"},"content":" * @return","lastModifiedDate":"2023-09-25"},{"lineNumber":300,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":301,"author":{"gitId":"dloh2236"},"content":" public static String getNextDate(String dateString) {","lastModifiedDate":"2023-09-25"},{"lineNumber":302,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-09-25"},{"lineNumber":303,"author":{"gitId":"dloh2236"},"content":" LocalDate date \u003d LocalDate.parse(dateString, dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":304,"author":{"gitId":"dloh2236"},"content":" if (date.isBefore(today)) {","lastModifiedDate":"2023-09-25"},{"lineNumber":305,"author":{"gitId":"dloh2236"},"content":" return date.plusYears(1).format(dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":306,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-25"},{"lineNumber":307,"author":{"gitId":"dloh2236"},"content":" return date.format(dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":308,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":309,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":310,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":311,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":312,"author":{"gitId":"dloh2236"},"content":" * Used for when there is a startDate and endDate in an event, to consider valid durations.","lastModifiedDate":"2023-09-25"},{"lineNumber":313,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":314,"author":{"gitId":"dloh2236"},"content":" * @param startDate start date of event","lastModifiedDate":"2023-09-25"},{"lineNumber":315,"author":{"gitId":"dloh2236"},"content":" * @param endDate end date of event","lastModifiedDate":"2023-09-25"},{"lineNumber":316,"author":{"gitId":"dloh2236"},"content":" * @return valid start date","lastModifiedDate":"2023-09-25"},{"lineNumber":317,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":318,"author":{"gitId":"dloh2236"},"content":" public static String getNextValidDuration(String startDate, String endDate) {","lastModifiedDate":"2023-09-25"},{"lineNumber":319,"author":{"gitId":"dloh2236"},"content":" if (endDate \u003d\u003d null) {","lastModifiedDate":"2023-09-25"},{"lineNumber":320,"author":{"gitId":"dloh2236"},"content":" return startDate;","lastModifiedDate":"2023-09-25"},{"lineNumber":321,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":322,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":323,"author":{"gitId":"dloh2236"},"content":" DateTimeFormatter dtf \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-09-25"},{"lineNumber":324,"author":{"gitId":"dloh2236"},"content":" LocalDate end \u003d LocalDate.parse(endDate, dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":325,"author":{"gitId":"dloh2236"},"content":" LocalDate start \u003d LocalDate.parse(startDate, dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":326,"author":{"gitId":"dloh2236"},"content":" if (end.isBefore(today)) {","lastModifiedDate":"2023-09-25"},{"lineNumber":327,"author":{"gitId":"dloh2236"},"content":" return start.plusYears(1).format(dtf);","lastModifiedDate":"2023-09-25"},{"lineNumber":328,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-25"},{"lineNumber":329,"author":{"gitId":"dloh2236"},"content":" return startDate;","lastModifiedDate":"2023-09-25"},{"lineNumber":330,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":331,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":332,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"dloh2236":332}},{"path":"src/main/java/oreo/exception/IllegalCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.exception;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"public class IllegalCommandException extends NoSuchElementException {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":" private String message;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" * Constructor for IllegalCommandException.","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" * @param message message to include.","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public IllegalCommandException(String message) {","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" this.message \u003d message;","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" String fullMessage \u003d \"I don\u0027t think I can \" + message + \"\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" + \"do you want to try again?\";","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" return fullMessage;","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"dloh2236":23}},{"path":"src/main/java/oreo/exception/IllegalDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.exception;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"public class IllegalDateTimeException extends Exception {","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":" private String message;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" * Constructor for IllegalDateTimeException.","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" * @param message message to include.","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" public IllegalDateTimeException(String message) {","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" super(message);","lastModifiedDate":"2023-09-23"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"dloh2236":16}},{"path":"src/main/java/oreo/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.parser;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.command.*;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-16"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" * Implements class that handles parsing of user input","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * Parses input by user.","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * @param fullCommand full input by user.","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * @return Command instance of the appropriate type base on input.","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" public static Command parse(String fullCommand) {","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" Scanner tokeniser \u003d new Scanner(fullCommand);","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" String command \u003d \"\";","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" command \u003d tokeniser.next();","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" return new EmptyCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" switch (command) {","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" case \"bye\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" return new ByeCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" case \"list\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" case \"unmark\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" case \"mark\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" return new MarkUnmarkCommand(command, tokeniser);","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" case \"delete\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" case \"clear\":","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" return new DeleteCommand(command, tokeniser);","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" case \"find\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" return new FindCommand(tokeniser);","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" case \"todo\":","lastModifiedDate":"2023-09-16"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" case \"deadline\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" case \"event\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" return new AddCommand(command, tokeniser);","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" case \"edit\" :","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" case \"modify\" :","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" case \"update\" :","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" return new EditCommand(command,tokeniser);","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" case \"help\" :","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" case \"hello\" :","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" case \"hi\" :","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" return new HelpCommand(command, tokeniser);","lastModifiedDate":"2023-09-21"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" case \"save\" :","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" return new SaveCommand();","lastModifiedDate":"2023-09-21"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-16"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" return new InvalidCommand();","lastModifiedDate":"2023-09-16"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" * Parse input by user in Edit Mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" * @param fullCommand full input from user.","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" * @return Command instance of the appropriate type base on input.","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" public static Command parseEditMode(String fullCommand) {","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" Scanner tokeniser \u003d new Scanner(fullCommand);","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" String command \u003d \"\";","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" command \u003d tokeniser.next();","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" return new EditCommand();","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" switch (command) {","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" case \"todo\":","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" case \"event\":","lastModifiedDate":"2023-09-18"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" return new AddCommand(command, tokeniser);","lastModifiedDate":"2023-09-18"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" case \"C\" :","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" case \"c\" :","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" return new ExitModeCommand();","lastModifiedDate":"2023-09-18"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-18"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" return new EditCommand();","lastModifiedDate":"2023-09-18"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":90}},{"path":"src/main/java/oreo/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.io.File;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * This class implements the storage function of the chatbot","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" private final File storageFile;","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" private String filePath;","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" * Constructor for storage.","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" * @param filePath file path to where file is saved.","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" this.storageFile \u003d new File(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" loadFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" private void loadFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" storageFile.createNewFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" * Reads saved file if it exists.","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" * @param tasks","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" * @throws FileNotFoundException if file does not exist.","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException invalid date time inputs.","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" public void readFile(TaskList tasks) throws FileNotFoundException, IllegalDateTimeException {","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" Scanner sc \u003d new Scanner(this.storageFile);","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" int id \u003d sc.nextInt();","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" int mark \u003d sc.nextInt();","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" String description \u003d sc.nextLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" Task newTask \u003d Task.generateSavedTask(id, mark \u003d\u003d 1, description);","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" * Clears file in the file path.","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" public void clearFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" new FileWriter(filePath, false).close();","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" * Writes file with list of task input upon bye command.","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" * @param tasks TaskList with all the task.","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" * @throws IOException for filewriter.","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" public void writeFile(TaskList tasks) throws IOException {","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" clearFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" FileWriter fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" int numberOfTasks \u003d tasks.getNumberOfTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c numberOfTasks; i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" String data \u003d tasks.get(i).writeToFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" fw.write(data);","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" fw.close();","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":89}},{"path":"src/main/java/oreo/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.datetime.TimeParser;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":" private String date;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" private String time;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" * Constructor for Deadline Class.","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * @param d description of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * @param date deadline date.","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * @param time deadline time.","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException wrong date time format.","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" public Deadline(String description, String date, String time) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" super(description);","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" this.date \u003d (date \u003d\u003d null) ? TimeParser.getNextDateOfTime(time) : TimeParser.getNextDate(date);","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" this.time \u003d time;","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" * Constructor for Deadline Class. Mainly used for file reading","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" * @param d description of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * @param date deadline date.","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" * @param time deadline time.","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" * @param isComplete whether deadline is completed.","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" public Deadline(String description, String date, String time, boolean isComplete) {","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" super(description);","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" this.time \u003d time;","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" this.isComplete \u003d isComplete;","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" String marker \u003d \"☐\";","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" if (this.isComplete) {","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" marker \u003d \"☑\";","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" String dateString \u003d (this.date \u003d\u003d null) ? \"\" : (\" \" + this.date);","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" String timeString \u003d (this.time \u003d\u003d null) ? \"\" : (\" \" + this.time);","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" return \"\\uD83C\\uDD73:\" + \" \" + this.description","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" + \" (by: \" + dateString + timeString + \") \"","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" + marker + \"\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" int mark \u003d isComplete ? 1 : 0;","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" String timeString \u003d (this.time \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.time));","lastModifiedDate":"2023-09-21"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" String data \u003d 2 + \" \" + mark + description + \"/\" + TimeParser.parseDateForFile(this.date) + timeString","lastModifiedDate":"2023-09-21"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" + System.lineSeparator();","lastModifiedDate":"2023-09-21"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" return data;","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" public String getTaskInEditFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" String timeString \u003d (this.time \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.time));","lastModifiedDate":"2023-09-21"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" return \"deadline\" + description + \" /by \" + TimeParser.parseDateForFile(this.date) + timeString;","lastModifiedDate":"2023-09-21"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dloh2236":76}},{"path":"src/main/java/oreo/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.datetime.TimeParser;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" private String fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" private String fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" private String toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" private String toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * Constructor for Event Class.","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" * @param d description of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @param fromDate start date.","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * @param fromTime start time.","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * @param toDate end date.","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * @param toTime end time.","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException invalid date time inputs.","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" public Event(String d, String fromDate, String fromTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" String toDate, String toTime) throws IllegalDateTimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" super(d);","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" eventDateTimeFromToCombinationChecker(fromTime, toTime);","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" this.fromDate \u003d (fromDate \u003d\u003d null) ? TimeParser.getNextDateOfTime(fromTime, toTime, toDate)","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" : TimeParser.getNextValidDuration(fromDate, toDate);","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" this.fromTime \u003d fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" this.toDate \u003d (toDate \u003d\u003d null) ? this.fromDate : TimeParser.getNextDate(toDate);","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" this.toTime \u003d toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" TimeParser.checkValidEventDate(this.fromDate, this.toDate);","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" if (this.fromDate.equals(this.toDate) \u0026\u0026 this.fromTime !\u003d null","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" \u0026\u0026 this.toTime !\u003d null) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" TimeParser.checkValidEventTime(this.fromTime, this.toTime);","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" * Checks if date time combination is valid. Used for above constructor","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" * @param fromTime start time.","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" * @param toTime end time.","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException when date time combination is not valid.","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" private void eventDateTimeFromToCombinationChecker(String fromTime, String toTime)","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" throws IllegalDateTimeException {","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" if ((fromTime !\u003d null \u0026\u0026 toTime \u003d\u003d null) || (fromTime \u003d\u003d null \u0026\u0026 toTime !\u003d null)) {","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" throw new IllegalDateTimeException(\"If you have a time in either \\\"/from\\\" or \\\"/to\\\" \"","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" + \"you will need time in both fields! If not Oreo will be lost on what to do!\");","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" * Constructor of Event task. Mainly used for file reading.","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" * @param d description of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" * @param fromDate start date.","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" * @param fromTime start time.","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" * @param toDate end date.","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" * @param toTime end time.","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" * @param isComplete if task is complete","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" public Event(String d, String fromDate, String fromTime,","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" String toDate, String toTime , boolean isComplete) {","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" super(d);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" this.fromTime \u003d fromTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" this.toTime \u003d toTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" this.isComplete \u003d isComplete;","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" String marker \u003d \"☐\";","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" if (this.isComplete) {","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" marker \u003d \"☑\";","lastModifiedDate":"2023-09-18"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" String fromDateString \u003d (this.fromDate \u003d\u003d null) ? \"\" : (\" \" + this.fromDate);","lastModifiedDate":"2023-09-21"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" String fromTimeString \u003d (this.fromTime \u003d\u003d null) ? \"\" : (\" \" + this.fromTime);","lastModifiedDate":"2023-09-21"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" String toDateString \u003d (this.toDate \u003d\u003d null) ? \"\" : (\" \" + this.toDate);","lastModifiedDate":"2023-09-21"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" String toTimeString \u003d (this.toTime \u003d\u003d null) ? \"\" : (\" \" + this.toTime);","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" return \"\\uD83C\\uDD74:\" + \" \" + this.description","lastModifiedDate":"2023-09-21"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" + \" (from: \" + fromDateString + fromTimeString","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" + \" to: \" + toDateString + toTimeString + \") \"","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" + marker + \"\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" int mark \u003d isComplete ? 1 : 0;","lastModifiedDate":"2023-09-03"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" String fromTimeString \u003d (this.fromTime \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.fromTime));","lastModifiedDate":"2023-09-21"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" String toTimeString \u003d (this.toTime \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.toTime));","lastModifiedDate":"2023-09-21"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" String data \u003d 3 + \" \" + mark + description + \"/\" + TimeParser.parseDateForFile(this.fromDate) + fromTimeString","lastModifiedDate":"2023-09-21"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" + \"/\" + TimeParser.parseDateForFile(this.toDate) + toTimeString + System.lineSeparator();","lastModifiedDate":"2023-09-21"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" return data;","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" public String getTaskInEditFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" String fromTimeString \u003d (this.fromTime \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.fromTime));","lastModifiedDate":"2023-09-21"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":" String toTimeString \u003d (this.toTime \u003d\u003d null) ? \"\" : (\", \" + TimeParser.parseTimeForFile(this.toTime));","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" return \"event\" + description + \" /from \" + TimeParser.parseDateForFile(this.fromDate) + fromTimeString","lastModifiedDate":"2023-09-21"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" + \" /to \" + TimeParser.parseDateForFile(this.toDate) + toTimeString;","lastModifiedDate":"2023-09-21"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dloh2236":116}},{"path":"src/main/java/oreo/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import oreo.datetime.TimeParser;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2023-09-23"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" * This class implements an abstract class, parent class for","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" * the other specific task.","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"public abstract class Task implements Comparable\u003cTask\u003e {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * id of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" protected int id;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" * description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" * whether task is complete.","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" protected boolean isComplete;","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" ","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" private static int idTracker \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" * Constructor of Task.","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" * @param d description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" public Task(String d) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" this.id \u003d idTracker;","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" idTracker++;","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" this.description \u003d d;","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" * Generates the appropriate sub-task instance based on user input.","lastModifiedDate":"2023-09-21"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" * @param command Command inputted by user.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" * @param tokeniser String that follows the command as a Scanner.","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" * @return Appropriate task base on input by user.","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException when command is invalid.","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException when date time input is invalid.","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" public static Task generateTask(String command, Scanner tokeniser) throws IllegalCommandException,","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" if (!tokeniser.hasNext()) {","lastModifiedDate":"2023-09-16"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"process an empty task\");","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" String contents \u003d tokeniser.nextLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" assert !contents.isEmpty(): \"contents should not be empty\";","lastModifiedDate":"2023-09-16"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" switch (command) {","lastModifiedDate":"2023-09-16"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" case \"todo\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" return processToDoCommand(contents);","lastModifiedDate":"2023-09-16"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-16"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" return processDeadlineCommand(contents);","lastModifiedDate":"2023-09-16"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" case \"event\" :","lastModifiedDate":"2023-09-16"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" return processEventCommand(contents);","lastModifiedDate":"2023-09-16"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-16"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"create such a task\");","lastModifiedDate":"2023-09-16"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" * Processes todo command for generateTask method.","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" * @param contents String after command.","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" * @return Task associated with input.","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException wrong command format.","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" private static Task processToDoCommand(String contents) throws IllegalCommandException {","lastModifiedDate":"2023-09-16"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" if (contents.contains(\"/by\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that for a todo, \"","lastModifiedDate":"2023-09-03"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" + \"are you thinking of a deadline?\");","lastModifiedDate":"2023-09-03"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" } else if (contents.contains(\"/from\") || contents.contains(\"/to\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that for a todo,\"","lastModifiedDate":"2023-09-03"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" + \"are you thinking of an event?\");","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" return new ToDo(contents);","lastModifiedDate":"2023-09-16"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" * Processes deadline command for generateTask method.","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" * @param contents String after command.","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" * @return Task associated with input.","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException wrong command format.","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" private static Task processDeadlineCommand(String contents) throws IllegalCommandException,","lastModifiedDate":"2023-09-16"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-16"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":" checkValidDeadlineFormat(contents); // catch invalid formats","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":" // Catch empty description and/or date","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" String[] parts \u003d contents.split(\" /by \", 2);","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" if (parts[0].isEmpty() || parts[0].isBlank()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"set a deadline without a description\");","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" } else if (parts[1].isEmpty() || parts[0].isBlank()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that, you might also want to include a date time\");","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" String[] dateTime \u003d TimeParser.parseInputOut(parts[1]);","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" return new Deadline(parts[0], dateTime[0], dateTime[1]);","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":" * Checks if deadline command format is valid and returns error messages accordingly.","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":" * @param contents String after command","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException wrong command format","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException wrong date time format","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":" private static void checkValidDeadlineFormat(String contents) throws IllegalCommandException,","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException{","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":" if (!contents.contains(\" /by \")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":" if (contents.contains(\"/by\")) {","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":" String[] parts \u003d contents.split(\"/by\");","lastModifiedDate":"2023-09-22"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":" int size \u003d parts.length;","lastModifiedDate":"2023-09-22"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":" switch (size) {","lastModifiedDate":"2023-09-22"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":" case 1:","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":" if (parts[0].isBlank()){","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that without a task description and date time\");","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that, you might also want to include a date time\");","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that, \"","lastModifiedDate":"2023-09-22"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":" + \"seems like you may have joined the \\\"by\\\" with the date time or unecessary characters. \"","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":" + \"Do leave space around \\\"by\\\"\");","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"set a deadline without a \\\"/by\\\",\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":" + \"or was there a typo?\");","lastModifiedDate":"2023-09-21"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":" } else if (contents.contains(\"/from\") || contents.contains(\"/to\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that for a deadline,\"","lastModifiedDate":"2023-09-03"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":" + \"are you thinking of an event?\");","lastModifiedDate":"2023-09-03"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-16"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-16"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":" * Processes event command for generateTask method.","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":" * @param contents String after command.","lastModifiedDate":"2023-09-22"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":" * @return Task associated with input.","lastModifiedDate":"2023-09-22"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException wrong command format.","lastModifiedDate":"2023-09-22"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":" private static Task processEventCommand(String contents) throws IllegalCommandException,","lastModifiedDate":"2023-09-16"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-16"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":" checkValidEventFormat(contents); // catch invalid formats","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":" // Catch empty description and/or date","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":" String[] message \u003d contents.split(\" /from \", 2);","lastModifiedDate":"2023-08-26"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":" if (message[0].isEmpty()) {","lastModifiedDate":"2023-09-18"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"process an event without a description\");","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":165,"author":{"gitId":"dloh2236"},"content":" String[] fromto \u003d message[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"dloh2236"},"content":" String[] fromDateTime \u003d TimeParser.parseInputOut(fromto[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"dloh2236"},"content":" String[] toDateTime \u003d TimeParser.parseInputOut(fromto[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"dloh2236"},"content":" return new Event(message[0], fromDateTime[0], fromDateTime[1],","lastModifiedDate":"2023-09-16"},{"lineNumber":169,"author":{"gitId":"dloh2236"},"content":" toDateTime[0], toDateTime[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"dloh2236"},"content":" * Checks if event command format is valid and returns error messages accordingly.","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"dloh2236"},"content":" * @param contents String after command","lastModifiedDate":"2023-09-22"},{"lineNumber":176,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalCommandException wrong command format","lastModifiedDate":"2023-09-22"},{"lineNumber":177,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException wrong date time format","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"dloh2236"},"content":" private static void checkValidEventFormat(String contents) throws IllegalCommandException,","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException{","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"dloh2236"},"content":" if (!contents.contains(\" /from \") || !contents.contains(\" /to \")) {","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"dloh2236"},"content":" if (contents.contains(\"/from\") \u0026\u0026 contents.contains(\"/to\")) {","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that, there might be some formatting \"","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"dloh2236"},"content":" + \"errors in your input, it should look like\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"dloh2236"},"content":" + \"\\\"event \u003cdescription\u003e /from \u003cdatetime\u003e /to \u003cdatetime\u003e\\\".\");","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"set an event without a \\\"/from\\\" and/or \\\"/to\\\",\\n\");","lastModifiedDate":"2023-09-22"},{"lineNumber":188,"author":{"gitId":"dloh2236"},"content":" } else if (contents.contains(\"/by\")) {","lastModifiedDate":"2023-09-22"},{"lineNumber":189,"author":{"gitId":"dloh2236"},"content":" throw new IllegalCommandException(\"do that for an event,\"","lastModifiedDate":"2023-09-22"},{"lineNumber":190,"author":{"gitId":"dloh2236"},"content":" + \"are you thinking of an deadline?\");","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":192,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":193,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":194,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":195,"author":{"gitId":"dloh2236"},"content":" * Returns if task is complete.","lastModifiedDate":"2023-09-22"},{"lineNumber":196,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":197,"author":{"gitId":"dloh2236"},"content":" * @return whether task is complete.","lastModifiedDate":"2023-09-22"},{"lineNumber":198,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":199,"author":{"gitId":"dloh2236"},"content":" public boolean isComplete() {","lastModifiedDate":"2023-09-02"},{"lineNumber":200,"author":{"gitId":"dloh2236"},"content":" return this.isComplete;","lastModifiedDate":"2023-09-03"},{"lineNumber":201,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":204,"author":{"gitId":"dloh2236"},"content":" * Change mark to opposite of the current status.","lastModifiedDate":"2023-09-03"},{"lineNumber":205,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":206,"author":{"gitId":"dloh2236"},"content":" public void switchMark() {","lastModifiedDate":"2023-09-02"},{"lineNumber":207,"author":{"gitId":"dloh2236"},"content":" isComplete \u003d !isComplete;","lastModifiedDate":"2023-09-03"},{"lineNumber":208,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":211,"author":{"gitId":"dloh2236"},"content":" * Generates appropriate task from file data.","lastModifiedDate":"2023-09-03"},{"lineNumber":212,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":213,"author":{"gitId":"dloh2236"},"content":" * @param id determines type of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":214,"author":{"gitId":"dloh2236"},"content":" * @param mark determines if task is done.","lastModifiedDate":"2023-09-03"},{"lineNumber":215,"author":{"gitId":"dloh2236"},"content":" * @param description contains description of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":216,"author":{"gitId":"dloh2236"},"content":" * @return Appropriate task base on file input.","lastModifiedDate":"2023-09-03"},{"lineNumber":217,"author":{"gitId":"dloh2236"},"content":" * @throws IllegalDateTimeException date time format is invalid,","lastModifiedDate":"2023-09-03"},{"lineNumber":218,"author":{"gitId":"dloh2236"},"content":" * file format is corrupt.","lastModifiedDate":"2023-09-03"},{"lineNumber":219,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":220,"author":{"gitId":"dloh2236"},"content":" public static Task generateSavedTask(int id, boolean mark, String description) throws IllegalDateTimeException {","lastModifiedDate":"2023-09-02"},{"lineNumber":221,"author":{"gitId":"dloh2236"},"content":" switch (id) {","lastModifiedDate":"2023-08-30"},{"lineNumber":222,"author":{"gitId":"dloh2236"},"content":" case (1):","lastModifiedDate":"2023-08-30"},{"lineNumber":223,"author":{"gitId":"dloh2236"},"content":" return new ToDo(description, mark);","lastModifiedDate":"2023-08-30"},{"lineNumber":224,"author":{"gitId":"dloh2236"},"content":" case (2):","lastModifiedDate":"2023-08-30"},{"lineNumber":225,"author":{"gitId":"dloh2236"},"content":" String[] parts \u003d description.split(\"/\", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":226,"author":{"gitId":"dloh2236"},"content":" String[] dateTime \u003d TimeParser.parseInputOut(parts[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":227,"author":{"gitId":"dloh2236"},"content":" return new Deadline(parts[0], dateTime[0], dateTime[1], mark);","lastModifiedDate":"2023-08-31"},{"lineNumber":228,"author":{"gitId":"dloh2236"},"content":" case (3):","lastModifiedDate":"2023-09-23"},{"lineNumber":229,"author":{"gitId":"dloh2236"},"content":" String[] message \u003d description.split(\"/\", 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":230,"author":{"gitId":"dloh2236"},"content":" String[] fromDateTime \u003d TimeParser.parseInputOut(message[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"dloh2236"},"content":" String[] toDateTime \u003d TimeParser.parseInputOut(message[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":232,"author":{"gitId":"dloh2236"},"content":" return new Event(message[0], fromDateTime[0], fromDateTime[1],","lastModifiedDate":"2023-08-31"},{"lineNumber":233,"author":{"gitId":"dloh2236"},"content":" toDateTime[0], toDateTime[1], mark);","lastModifiedDate":"2023-08-31"},{"lineNumber":234,"author":{"gitId":"dloh2236"},"content":" default:","lastModifiedDate":"2023-09-23"},{"lineNumber":235,"author":{"gitId":"dloh2236"},"content":" throw new InputMismatchException();","lastModifiedDate":"2023-09-23"},{"lineNumber":236,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":237,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":238,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":239,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":240,"author":{"gitId":"dloh2236"},"content":" * Converts task to file data to write to file.","lastModifiedDate":"2023-09-03"},{"lineNumber":241,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":242,"author":{"gitId":"dloh2236"},"content":" * @return task in file data format.","lastModifiedDate":"2023-09-03"},{"lineNumber":243,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":244,"author":{"gitId":"dloh2236"},"content":" public abstract String writeToFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":245,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":247,"author":{"gitId":"dloh2236"},"content":" * Returns task String for editing in text field.","lastModifiedDate":"2023-09-22"},{"lineNumber":248,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":249,"author":{"gitId":"dloh2236"},"content":" * @return","lastModifiedDate":"2023-09-22"},{"lineNumber":250,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":251,"author":{"gitId":"dloh2236"},"content":" public abstract String getTaskInEditFormat();","lastModifiedDate":"2023-09-18"},{"lineNumber":252,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":253,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":254,"author":{"gitId":"dloh2236"},"content":" * Checks if description contains keyword","lastModifiedDate":"2023-09-03"},{"lineNumber":255,"author":{"gitId":"dloh2236"},"content":" * @param keyword String of interest","lastModifiedDate":"2023-09-03"},{"lineNumber":256,"author":{"gitId":"dloh2236"},"content":" * @return true if description contains String","lastModifiedDate":"2023-09-03"},{"lineNumber":257,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":258,"author":{"gitId":"dloh2236"},"content":" public boolean contains(String keyword) {","lastModifiedDate":"2023-09-03"},{"lineNumber":259,"author":{"gitId":"dloh2236"},"content":" return description.contains(keyword);","lastModifiedDate":"2023-09-03"},{"lineNumber":260,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":261,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":262,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":263,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":264,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":265,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"dloh2236"},"content":" public abstract String toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":267,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":269,"author":{"gitId":"dloh2236"},"content":" *{@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":270,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":271,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":272,"author":{"gitId":"dloh2236"},"content":" public int compareTo(Task other) {","lastModifiedDate":"2023-08-24"},{"lineNumber":273,"author":{"gitId":"dloh2236"},"content":" return this.id - other.id;","lastModifiedDate":"2023-08-24"},{"lineNumber":274,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":275,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dloh2236":275}},{"path":"src/main/java/oreo/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.ui.Formatter;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" * This class implements the TaskList used by the chatbot.","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" private int numberOfCompletedTasks \u003d 0;","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" * Constructor for TaskList, initialise an ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" public TaskList() {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" * Adds task to list.","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" * @param task Task to be added.","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" public void add(Task task) {","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" if (task.isComplete()) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" numberOfCompletedTasks++;","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" taskList.add(task);","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" * Removes task from the list.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" * @param index Index position of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" * @return Task that was removed from the list.","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" public Task remove(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" Task removedTask \u003d taskList.remove(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" if (removedTask.isComplete()) numberOfCompletedTasks--;","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" assert numberOfCompletedTasks \u003c\u003d getNumberOfTask():","lastModifiedDate":"2023-09-16"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" \"completed task must always be less than or equal total number of task\";","lastModifiedDate":"2023-09-16"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" return removedTask;","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" * Clears entire list, only when file is corrupt.","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" public void clearAll() {","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" taskList.clear();","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" numberOfCompletedTasks \u003d 0;","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" * Returns number of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" * @return number of task.","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" public int getNumberOfTask() {","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" return taskList.size();","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" * Gets task in that index.","lastModifiedDate":"2023-09-03"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" * @param index position of task in the list.","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" * @return Task in specified index.","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" public Task get(int index) {","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" return taskList.get(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" * Checks if all tasks are complete.","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" * @return true if all complete, false if not.","lastModifiedDate":"2023-09-03"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" public boolean isAllComplete() {","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" return taskList.size() \u003d\u003d numberOfCompletedTasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" * String of list of task and list headers depending on","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" * number of task in the list left (including","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" * if all task are completed).","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":" * @return list of task and appropriate headers.","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" public String list() {","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" return \"List looks empty to me!\";","lastModifiedDate":"2023-09-21"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" StringBuilder displayList \u003d new StringBuilder();","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" if (isAllComplete()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" displayList.append(\"Wow! You are ALL COMPLETE!!!!\\n\")","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":" .append(\"TIME TO PLAY WITH MEEEEE :DDDD\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":" } else if (taskList.size() \u003e 10) {","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":" displayList.append(\"Seems like you have a lot of things to do...\\n\")","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" .append(\"Remember to play with me after :D\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" displayList.append(\"Here are the things you told me to keep track of:\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":" displayList.append(i + 1 + \". \").append(taskList.get(i).toString());","lastModifiedDate":"2023-09-02"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" return displayList.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":" * Marks task at index as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":" * @param index index.","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":" * @return appropriate response to action.","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":" public String markDone(int index) {","lastModifiedDate":"2023-09-21"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":" Task task \u003d get(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":" if (task.isComplete()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":" return \"That was done already...\\n\" +","lastModifiedDate":"2023-09-02"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":" \"are you sure you wanted to mark that?\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":" + task.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":" task.switchMark();","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":" numberOfCompletedTasks++;","lastModifiedDate":"2023-09-02"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":" return \"Yay! One step closer to playing with me!\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":" + task.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":" * Unmarks task at index as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":" * @param index index.","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":" * @return appropriate response to action.","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":" public String markNotDone(int index) {","lastModifiedDate":"2023-09-21"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":" Task task \u003d get(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":" if (!task.isComplete()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":" return \"Don\u0027t worry it\u0027s still not done\\n\"","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":" + \"What are you doing? Let\u0027s get it done now!\\n\"","lastModifiedDate":"2023-09-03"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":" + task.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":" task.switchMark();","lastModifiedDate":"2023-09-02"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":" numberOfCompletedTasks--;","lastModifiedDate":"2023-09-02"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":" return \"Oh no... what happened :(\\n\"","lastModifiedDate":"2023-09-02"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":" + task.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":" * Marks all task in list as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":" * @return String response to marking all task.","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":" public String markAll() {","lastModifiedDate":"2023-09-21"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c getNumberOfTask(); i++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":165,"author":{"gitId":"dloh2236"},"content":" markDone(i);","lastModifiedDate":"2023-09-21"},{"lineNumber":166,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":167,"author":{"gitId":"dloh2236"},"content":" return \"Marked all your task done! TIME TO PLAY?\";","lastModifiedDate":"2023-09-21"},{"lineNumber":168,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":169,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":170,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"dloh2236"},"content":" * Unmarks all task in list as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":172,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"dloh2236"},"content":" * @return String response to unmarking all task.","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"dloh2236"},"content":" public String unmarkAll() {","lastModifiedDate":"2023-09-21"},{"lineNumber":176,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c getNumberOfTask(); i++) {","lastModifiedDate":"2023-09-21"},{"lineNumber":177,"author":{"gitId":"dloh2236"},"content":" markNotDone(i);","lastModifiedDate":"2023-09-21"},{"lineNumber":178,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":179,"author":{"gitId":"dloh2236"},"content":" return \"Oh noooo! Unmarked everything! D:\";","lastModifiedDate":"2023-09-21"},{"lineNumber":180,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":181,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":182,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"dloh2236"},"content":" * Lists search results.","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"dloh2236"},"content":" * @param keyword searching keyword.","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"dloh2236"},"content":" * @return String of list of task matching keyword.","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":188,"author":{"gitId":"dloh2236"},"content":" public String listResults(String keyword) {","lastModifiedDate":"2023-09-21"},{"lineNumber":189,"author":{"gitId":"dloh2236"},"content":" if (getNumberOfTask() \u003d\u003d 0) {","lastModifiedDate":"2023-09-21"},{"lineNumber":190,"author":{"gitId":"dloh2236"},"content":" return \"Unfortunately, I couldn\u0027t find any task matching \\\"\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":191,"author":{"gitId":"dloh2236"},"content":" keyword +","lastModifiedDate":"2023-09-21"},{"lineNumber":192,"author":{"gitId":"dloh2236"},"content":" \"\\\" :(\";","lastModifiedDate":"2023-09-21"},{"lineNumber":193,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-21"},{"lineNumber":194,"author":{"gitId":"dloh2236"},"content":" StringBuilder displayList \u003d new StringBuilder();","lastModifiedDate":"2023-09-21"},{"lineNumber":195,"author":{"gitId":"dloh2236"},"content":" displayList.append(\"Here are task(s) matching \\\"\" + keyword + \"\\\" in your list: \\n\");","lastModifiedDate":"2023-09-21"},{"lineNumber":196,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-21"},{"lineNumber":197,"author":{"gitId":"dloh2236"},"content":" displayList.append(i + 1 + \".\").append(taskList.get(i).toString());","lastModifiedDate":"2023-09-21"},{"lineNumber":198,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":199,"author":{"gitId":"dloh2236"},"content":" return displayList.toString();","lastModifiedDate":"2023-09-21"},{"lineNumber":200,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":201,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":202,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":203,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":204,"author":{"gitId":"dloh2236"},"content":" * Modifies task at index with new task.","lastModifiedDate":"2023-09-22"},{"lineNumber":205,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":206,"author":{"gitId":"dloh2236"},"content":" * @param index of old task.","lastModifiedDate":"2023-09-22"},{"lineNumber":207,"author":{"gitId":"dloh2236"},"content":" * @param task new task.","lastModifiedDate":"2023-09-22"},{"lineNumber":208,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":209,"author":{"gitId":"dloh2236"},"content":" public void modifyTask(int index, Task task) {","lastModifiedDate":"2023-09-18"},{"lineNumber":210,"author":{"gitId":"dloh2236"},"content":" if (taskList.get(index).isComplete()) numberOfCompletedTasks--;","lastModifiedDate":"2023-09-18"},{"lineNumber":211,"author":{"gitId":"dloh2236"},"content":" taskList.set(index, task);","lastModifiedDate":"2023-09-18"},{"lineNumber":212,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":213,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"dloh2236":213}},{"path":"src/main/java/oreo/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":" * Constructor of ToDo Class.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" * @param d task description","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" public ToDo(String d) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" super(d);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" * Constructor for ToDo Class specifically for file reading.","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" * @param description task description.","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * @param completed whether task is complete.","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" public ToDo(String description, boolean completed) {","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" super(description);","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" this.isComplete \u003d completed;","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" String marker \u003d \"☐\";","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" if (this.isComplete) {","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" marker \u003d \"☑\";","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" return \"\\uD83C\\uDD83:\" + \" \" + this.description + \" \" + marker + \"\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" public String writeToFile() {","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" int mark \u003d isComplete ? 1 : 0;","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" String data \u003d 1 + \" \" + mark + description + System.lineSeparator();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" return data;","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" * {@inheritDoc}","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" public String getTaskInEditFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" return \"todo\" + description;","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"dloh2236":54}},{"path":"src/main/java/oreo/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.ui;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-07"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" private Label dialog;","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" private HBox speechBubble;","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-07"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" speechBubble.heightProperty();","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" private void flip() {","lastModifiedDate":"2023-09-07"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-07"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-07"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" dialog.setTextFill(Color.valueOf(\"#000000\"));","lastModifiedDate":"2023-09-18"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" speechBubble.setStyle(\"-fx-background-color: lightgrey;\" +","lastModifiedDate":"2023-09-18"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" \"-fx-background-radius: 1em;\");","lastModifiedDate":"2023-09-18"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" * Gets user dialog box.","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" * @param text user input.","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" * @param image user image.","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" * @return Dialog box containing both input and image.","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" public static DialogBox getUserDialog(String text, Image image) {","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" return new DialogBox(text, image);","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" * Gets Oreo\u0027s dialog box.","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" * @param text Oreo\u0027s response.","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" * @param image Oreo\u0027s image.","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" * @return Dialog box containing both Oreo\u0027s response and image.","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" public static DialogBox getOreoDialog(String text, Image image) {","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" var db \u003d new DialogBox(text, image);","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" db.flip();","lastModifiedDate":"2023-09-07"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" return db;","lastModifiedDate":"2023-09-07"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":83}},{"path":"src/main/java/oreo/ui/Formatter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.ui;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"/**","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":" * This class implements the Ui of the chatbot.","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":" * @author Daniel Loh","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":" * @version 03/09/2023","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"public class Formatter {","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" private String logo \u003d \" .-\\\"-.\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" + \" /|6 6|\\\\\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" + \" _ ._ _ _ {/(_0_)\\\\}\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" + \"(_) | (/_ (_) _/ ^ \\\\_\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" + \" (/ /^\\\\ \\\\)-\u0027\\n\"","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" + \" \\\"\\\"\u0027 \u0027\\\"\\\"\\n\";","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" * Indents line by the number of spaces specified.","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" * @param message contents to be indented.","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" * @param indents number of spaces to indent by.","lastModifiedDate":"2023-09-21"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" * @return returns the message with the specified amount of indents.","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" public static String indentLineBy(String message, int indents) {","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" StringBuilder indentedLine \u003d new StringBuilder();","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" for (int i \u003d 0; i \u003c indents; i++) {","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" indentedLine.append(\" \");","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" return indentedLine.append(message).toString();","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":31}},{"path":"src/main/java/oreo/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.ui;","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import javafx.geometry.Side;","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.layout.*;","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"import oreo.Oreo;","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"import oreo.command.Command;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"import oreo.command.EditCommand;","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"import oreo.parser.Parser;","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"import oreo.task.Task;","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-07"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"import java.util.InputMismatchException;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"import java.util.Timer;","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"import java.util.TimerTask;","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-07"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" private TextField userInputEdit;","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" private ImageView sendButton;","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" private ImageView editButton;","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" private Oreo oreo;","lastModifiedDate":"2023-09-07"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.png\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" private Image oreoImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/oreo.png\"));","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" private void initialize() {","lastModifiedDate":"2023-09-07"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty()); // scroll follows","lastModifiedDate":"2023-09-07"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" * Sets oreo as an instance of oreo.","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" * @param oreo instance of oreo.","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" public void setOreo(Oreo oreo) {","lastModifiedDate":"2023-09-07"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" this.oreo \u003d oreo;","lastModifiedDate":"2023-09-07"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" * Creates two dialog boxes, one for user input and other one containing response to that particular use input.","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" * Clears the user input after processing.","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-07"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-07"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" Command c \u003d Parser.parse(input); // parses input and generates command","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" if (c.isExit()) {","lastModifiedDate":"2023-09-07"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" exit(input); // pass to exit method to handle","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" return;","lastModifiedDate":"2023-09-21"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" } else if (c.isEdit()) {","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" userToEditHandler(c, input); // pass to userToEditHandler to handle","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" return;","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" String response \u003d oreo.execute(c);","lastModifiedDate":"2023-09-07"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, response);","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" userInput.clear();","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" * Creates two dialog boxes, one for user input and other one containing response to that particular use input","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" * in edit mode. Clears the user input after processing and changes text fields accordingly.","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" private void handleEditInput() {","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" String input \u003d userInputEdit.getText();","lastModifiedDate":"2023-09-18"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" Command c \u003d Parser.parseEditMode(input); // reads input in edit mode, generate command accordingly","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":" String response;","lastModifiedDate":"2023-09-18"},{"lineNumber":88,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":89,"author":{"gitId":"dloh2236"},"content":" response \u003d oreo.executeEditMode(c);","lastModifiedDate":"2023-09-18"},{"lineNumber":90,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException | IllegalCommandException e) {","lastModifiedDate":"2023-09-18"},{"lineNumber":91,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, e.getMessage());","lastModifiedDate":"2023-09-18"},{"lineNumber":92,"author":{"gitId":"dloh2236"},"content":" Task taskToEdit \u003d (Task) oreo.getCache(1);","lastModifiedDate":"2023-09-18"},{"lineNumber":93,"author":{"gitId":"dloh2236"},"content":" userInputEdit.setText(taskToEdit.getTaskInEditFormat());","lastModifiedDate":"2023-09-18"},{"lineNumber":94,"author":{"gitId":"dloh2236"},"content":" return;","lastModifiedDate":"2023-09-18"},{"lineNumber":95,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":96,"author":{"gitId":"dloh2236"},"content":" if (c.isEdit()) {","lastModifiedDate":"2023-09-18"},{"lineNumber":97,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, response);","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"dloh2236"},"content":" Task taskToEdit \u003d (Task) oreo.getCache(1);","lastModifiedDate":"2023-09-18"},{"lineNumber":99,"author":{"gitId":"dloh2236"},"content":" userInputEdit.setText(taskToEdit.getTaskInEditFormat());","lastModifiedDate":"2023-09-18"},{"lineNumber":100,"author":{"gitId":"dloh2236"},"content":" } else {","lastModifiedDate":"2023-09-18"},{"lineNumber":101,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, response);","lastModifiedDate":"2023-09-18"},{"lineNumber":102,"author":{"gitId":"dloh2236"},"content":" oreo.clearCache(); // clear cache once edit mode exits","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"dloh2236"},"content":" sendButton.setVisible(true); // show normal sendButton","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"dloh2236"},"content":" editButton.setVisible(false); // hides editButton","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"dloh2236"},"content":" userInputEdit.clear(); // clears edit text field","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"dloh2236"},"content":" userInputEdit.setVisible(false); // hides edit text field","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"dloh2236"},"content":" userInput.setVisible(true); // show normal text field","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"dloh2236"},"content":" userInput.clear(); // clear normal text field","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"dloh2236"},"content":" userInput.requestFocus(); // brings focus to text field ready for next input","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":111,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":112,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":113,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"dloh2236"},"content":" * Sets up UI for editing mode.","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"dloh2236"},"content":" * @param command generated command based on input.","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"dloh2236"},"content":" * @param input from user.","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":120,"author":{"gitId":"dloh2236"},"content":" public void userToEditHandler(Command command, String input) {","lastModifiedDate":"2023-09-18"},{"lineNumber":121,"author":{"gitId":"dloh2236"},"content":" String response \u003d \"\";","lastModifiedDate":"2023-09-18"},{"lineNumber":122,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":123,"author":{"gitId":"dloh2236"},"content":" response \u003d oreo.execute(command);","lastModifiedDate":"2023-09-18"},{"lineNumber":124,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e){","lastModifiedDate":"2023-09-18"},{"lineNumber":125,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, e.getMessage());","lastModifiedDate":"2023-09-18"},{"lineNumber":126,"author":{"gitId":"dloh2236"},"content":" userInput.clear();","lastModifiedDate":"2023-09-18"},{"lineNumber":127,"author":{"gitId":"dloh2236"},"content":" return;","lastModifiedDate":"2023-09-18"},{"lineNumber":128,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":129,"author":{"gitId":"dloh2236"},"content":" Task taskToEdit \u003d oreo.getTask((EditCommand) command); // get task to edit","lastModifiedDate":"2023-09-18"},{"lineNumber":130,"author":{"gitId":"dloh2236"},"content":" oreo.cache(input); // cache input","lastModifiedDate":"2023-09-18"},{"lineNumber":131,"author":{"gitId":"dloh2236"},"content":" oreo.cache(taskToEdit); // cache task","lastModifiedDate":"2023-09-18"},{"lineNumber":132,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, response);","lastModifiedDate":"2023-09-18"},{"lineNumber":133,"author":{"gitId":"dloh2236"},"content":" // changes from normal input mode to edit mode","lastModifiedDate":"2023-09-18"},{"lineNumber":134,"author":{"gitId":"dloh2236"},"content":" userInput.clear();","lastModifiedDate":"2023-09-18"},{"lineNumber":135,"author":{"gitId":"dloh2236"},"content":" userInput.setVisible(false);","lastModifiedDate":"2023-09-18"},{"lineNumber":136,"author":{"gitId":"dloh2236"},"content":" userInputEdit.setVisible(true);","lastModifiedDate":"2023-09-18"},{"lineNumber":137,"author":{"gitId":"dloh2236"},"content":" userInputEdit.setText(taskToEdit.getTaskInEditFormat());","lastModifiedDate":"2023-09-18"},{"lineNumber":138,"author":{"gitId":"dloh2236"},"content":" sendButton.setVisible(false);","lastModifiedDate":"2023-09-18"},{"lineNumber":139,"author":{"gitId":"dloh2236"},"content":" editButton.setVisible(true);","lastModifiedDate":"2023-09-18"},{"lineNumber":140,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":141,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":142,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"dloh2236"},"content":" * Displays UI for start up.","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":146,"author":{"gitId":"dloh2236"},"content":" public void startUp() {","lastModifiedDate":"2023-09-07"},{"lineNumber":147,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":148,"author":{"gitId":"dloh2236"},"content":" oreo.startUp();","lastModifiedDate":"2023-09-07"},{"lineNumber":149,"author":{"gitId":"dloh2236"},"content":" greetUser();","lastModifiedDate":"2023-09-07"},{"lineNumber":150,"author":{"gitId":"dloh2236"},"content":" } catch (FileNotFoundException | IllegalDateTimeException |","lastModifiedDate":"2023-09-07"},{"lineNumber":151,"author":{"gitId":"dloh2236"},"content":" InputMismatchException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":152,"author":{"gitId":"dloh2236"},"content":" // if file is corrupt","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"dloh2236"},"content":" oreo.clearTaskAndFile();","lastModifiedDate":"2023-09-07"},{"lineNumber":154,"author":{"gitId":"dloh2236"},"content":" String fileCorruptMessage \u003d \"saved file is corrupt, creating new file...\";","lastModifiedDate":"2023-09-07"},{"lineNumber":155,"author":{"gitId":"dloh2236"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":156,"author":{"gitId":"dloh2236"},"content":" DialogBox.getOreoDialog(fileCorruptMessage, oreoImage));","lastModifiedDate":"2023-09-07"},{"lineNumber":157,"author":{"gitId":"dloh2236"},"content":" greetUser();","lastModifiedDate":"2023-09-16"},{"lineNumber":158,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":159,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":160,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":161,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"dloh2236"},"content":" * Displays UI for greeting user.","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":165,"author":{"gitId":"dloh2236"},"content":" private void greetUser() {","lastModifiedDate":"2023-09-07"},{"lineNumber":166,"author":{"gitId":"dloh2236"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":167,"author":{"gitId":"dloh2236"},"content":" DialogBox.getOreoDialog(oreo.greet(), oreoImage));","lastModifiedDate":"2023-09-07"},{"lineNumber":168,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":169,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":170,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"dloh2236"},"content":" * Displays UI when user enters \"bye\" command.","lastModifiedDate":"2023-09-22"},{"lineNumber":172,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"dloh2236"},"content":" * @param input user input.","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-07"},{"lineNumber":176,"author":{"gitId":"dloh2236"},"content":" private void exit(String input) {","lastModifiedDate":"2023-09-07"},{"lineNumber":177,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-07"},{"lineNumber":178,"author":{"gitId":"dloh2236"},"content":" oreo.closeProcess();","lastModifiedDate":"2023-09-07"},{"lineNumber":179,"author":{"gitId":"dloh2236"},"content":" setDialogContainer(input, oreo.sayBye());","lastModifiedDate":"2023-09-18"},{"lineNumber":180,"author":{"gitId":"dloh2236"},"content":" userInput.clear();","lastModifiedDate":"2023-09-21"},{"lineNumber":181,"author":{"gitId":"dloh2236"},"content":" new Timer().schedule(new TimerTask() {","lastModifiedDate":"2023-09-21"},{"lineNumber":182,"author":{"gitId":"dloh2236"},"content":" public void run () {","lastModifiedDate":"2023-09-21"},{"lineNumber":183,"author":{"gitId":"dloh2236"},"content":" System.exit(0);","lastModifiedDate":"2023-09-21"},{"lineNumber":184,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":185,"author":{"gitId":"dloh2236"},"content":" }, 1000); // shut down 1s after dialogbox displays","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"dloh2236"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-07"},{"lineNumber":187,"author":{"gitId":"dloh2236"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-07"},{"lineNumber":188,"author":{"gitId":"dloh2236"},"content":" DialogBox.getOreoDialog(e.getMessage(), oreoImage));","lastModifiedDate":"2023-09-07"},{"lineNumber":189,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":190,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":191,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-07"},{"lineNumber":192,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":193,"author":{"gitId":"dloh2236"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":194,"author":{"gitId":"dloh2236"},"content":" * Sets string for dialog containers.","lastModifiedDate":"2023-09-22"},{"lineNumber":195,"author":{"gitId":"dloh2236"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":196,"author":{"gitId":"dloh2236"},"content":" * @param input user input.","lastModifiedDate":"2023-09-22"},{"lineNumber":197,"author":{"gitId":"dloh2236"},"content":" * @param response bot response.","lastModifiedDate":"2023-09-22"},{"lineNumber":198,"author":{"gitId":"dloh2236"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":199,"author":{"gitId":"dloh2236"},"content":" @FXML","lastModifiedDate":"2023-09-18"},{"lineNumber":200,"author":{"gitId":"dloh2236"},"content":" private void setDialogContainer(String input, String response) {","lastModifiedDate":"2023-09-18"},{"lineNumber":201,"author":{"gitId":"dloh2236"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-18"},{"lineNumber":202,"author":{"gitId":"dloh2236"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-18"},{"lineNumber":203,"author":{"gitId":"dloh2236"},"content":" DialogBox.getOreoDialog(response, oreoImage)","lastModifiedDate":"2023-09-18"},{"lineNumber":204,"author":{"gitId":"dloh2236"},"content":" );","lastModifiedDate":"2023-09-18"},{"lineNumber":205,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":206,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":206}},{"path":"src/main/resources/help/bye.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"bye\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Closes the application and saves all tasks user has inputted.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"bye\" - closes application and saves all tasks.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"see above","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/clear.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"clear\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Deletes all task in the list. Similar to \"delete all\"","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"clear\" - deletes all task in list.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"see above","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/datetime.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"Seems like you need help with some date time formats! Oreo knows the time well so don\u0027t worry!","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"ACCEPTED DATE FORMATS:","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"d/M/yyyy (e.g. 1/1/2023, 01-12-2023) *dashes are accepted too","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"d/M/yy (e.g. 1/1/23, 01-12-23) *dashes are accepted too","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"MMM d yyyy (e.g. Jan 1 2023) *not case sensitive","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"MMM d yy (e.g. Jan 1 23) *not case sensitive","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"d MMM yyyy (e.g. 1 Jan 2023) *not case sensitive","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"d MMM yy (e.g. 1 Jan 24) *not case sensitive","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"yyyy/M/d (e.g 2023/1/1, 2023-12-01) *dashes are accepted too","lastModifiedDate":"2023-09-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"yy/M/d (e.g. 23/1/1, 23-12-01) *dashes are accepted too","lastModifiedDate":"2023-09-24"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"d/M (e.g. 1/1, 1/12) *dashes are accepted too","lastModifiedDate":"2023-09-24"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"MMM d (e.g Jan 1, jan 1) *not case senstiive","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"d MMM (e.g. 1 Jan, 1 jan) *not case sensitive","lastModifiedDate":"2023-09-24"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"*note: non-year formats have their years set to the occurrence of that date.","lastModifiedDate":"2023-09-24"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"ACCEPTED TIME FORMATS:","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"HHmm (e.g. 1800)","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"h a (e.g. 6 pm, 6 PM)","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"ha (e.g. 6pm, 6PM)","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"HH:mm (e.g. 18:00, 18.00) *periods are accepted too","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"h:mm a (e.g. 6:00 pm, 6:00 PM, 6.00 PM) *periods are accepted too, not case sensitive","lastModifiedDate":"2023-09-24"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"h:mma (e.g. 6:00pm, 6:00PM, 6.00PM) *periods are accepted too, not case sensitive","lastModifiedDate":"2023-09-24"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":"✓ A GOOD EXAMPLE (BOTH DATE AND TIME):","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"\"1 Jan 2023, 6pm\"","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":"✗ BAD EXAMPLES:","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":"\"1 /0 1/2023\" - unnecessary blank space","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":"\"1 Jan 2023 6pm\" - missing comma","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":"For additional info, type \"help datetimeMore\"","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":33}},{"path":"src/main/resources/help/datetimeMore.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"ADDITIONAL INFO:","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"1. Any combination of date time inputs. Entering date only, time only or both are valid.","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"2. Time after date must be separated with a \", \" (e.g. 1 Jan 2023, 6pm).","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"3. If no date is specified, date will be set next occurrence of that time.","lastModifiedDate":"2023-09-24"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"4. For events with no date specified, date will be set based on point 3 with respect to the end time.","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"5. Date specified without a given year will be assigned the next instance of this date.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"6. For event datetime inputs, \"/to\" date must be after \"/from\" date.","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"7. For event datetime inputs, an unspecified \"/to\" date will set \"/to\" date to the specified \"/from\" date. (this is valid: \"event playtime /from 1 jan, 2pm /to 5pm\")","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":8}},{"path":"src/main/resources/help/deadline.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"deadline\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Creates a time sensitive deadline task with a specified end date time.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"deadline \u003cdescription\u003e /by \u003cdatetime\u003e\" - creates a deadline task with description and \"/by\" a date time specified.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"General rules on date time format:","lastModifiedDate":"2023-09-24"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"1. Date and time input, will be saved accordingly. Past deadlines should be specified in this format, else Oreo will find next occurence of date time input.","lastModifiedDate":"2023-09-24"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"2. Date only, time will not be included in the saved task","lastModifiedDate":"2023-09-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"3. Time only, date will to next occurence of the task","lastModifiedDate":"2023-09-24"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"For accepted date time formats, input \"help datetime\".","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"\"deadline feed oreo /by 01/01/2023, 1800\" (creates a deadline task to feed oreo by 1st Jan 2023 6:00 PM)","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"\"deadline buy oreo toy /by 1 Jan\" (creates a deadline task to get oreo a toy by next occurrence of 1st Jan)","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"\"deadline bathe oreo /by 6:30pm\" (creates a deadline task to bathe oreo by next occurence of 6:30 PM)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":18}},{"path":"src/main/resources/help/delete.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"delete\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Deletes the task at the index specified. It can also be used to delete all tasks, similar to \"clear\".","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"delete \u003cindex\u003e\" - deletes task at the specified index. ","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"\"delete all\" - deletes all task that is in the list.","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"see above","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":11}},{"path":"src/main/resources/help/edit.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"edit\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"same as \"modify\" and \"update\"","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"Opens editing mode for the task specified by the index. Task specified will appear in the text field for user to modify the task. Modified task must follow the correct syntax when modifying.","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"User can type \"C\" or \"c\" to exit editing mode for the task and resume normal input.","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\"edit \u003cindex\u003e\" - opens editing mode on task specified in index and puts task in the text field for user to edit. User can make the necessary amends and input it to modify the specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"\"edit 1\" (task 1: TODO: play with oreo - command will enter editing mode on task 1 and display \"todo play with oreo\" in the text field for user to edit)","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"\"c\" exits editing mode without editing the task.","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":16}},{"path":"src/main/resources/help/event.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"event\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Creates a time sensitive event with a specified","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"start and end datetime.","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"\"event \u003cdescription\u003e /from \u003cdatetime\u003e /to \u003cdatetime\u003e\" - creates an event task with description, \"from\" date time and a \"to\" date time specified.","lastModifiedDate":"2023-09-24"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"General rules for date time format:","lastModifiedDate":"2023-09-24"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"1. If \"/from\" or \"/to\" has a time, both must have a time.","lastModifiedDate":"2023-09-24"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"2. If \"/to\" must be after \"/from\".","lastModifiedDate":"2023-09-24"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"3. Only date input will not include a time saved in the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"4. Only time input will set a date with reference to the `/to` time and give the next occurence of that duraiton.","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"5. For `time` to `date, time` input, the inferred date for `/from` will be the next occurence of that time instead of referencing the `/to` time.","lastModifiedDate":"2023-09-24"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"For accepted date time formats, type \"help datetime\" to see all accepted date time formats","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"\"event playtime /from 01/01/2023, 1200 /to 6:00pm\" (creates an event task for playtime on Jan 1 2023 from 12:00 PM - 6:00 PM)","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"\"event staycation /from 1 Jan, 1200 /to Jan 3, 12:00\" (creates an event task for staycation for next occurrence of Jan 1 at 12:00 PM to Jan 3 2023 12:00 PM for next occurence of the of date range)","lastModifiedDate":"2023-09-24"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"\"event walk oreo /from 17:00 /to 1800\" (creates an event task to walk oreo for the next occurence of 5:00 PM to 6:00 PM)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":21}},{"path":"src/main/resources/help/find.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"find\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Finds any relevant tasks with a description that matches the keyword specified.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"find \u003ckeyword\u003e\" - finds tasks with a description that matches the keyword and displays it.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"\"find oreo\" (displays all tasks with keyword of oreo)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/general.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"Hey seems like you need some help!","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"I am Oreo, your trusty canine friend :D","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"I can help you keep track of your tasks!","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"Here are some things you can do:","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"help - displays this message again","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"help \u003ccommand\u003e - learn more about a \u003ccommand\u003e ✦","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"todo - creates a todo task","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"deadline - creates a deadline task","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"event - creates an event task","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"list - list all task you have created","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"mark - marks task as done","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"unmark - unmarks task as incomplete","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"delete - deletes a task/deletes all task","lastModifiedDate":"2023-09-24"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"clear - deletes all task","lastModifiedDate":"2023-09-24"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"edit/modify/update - modifies a task","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"find - searches for a task","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"save - saves the current tasks to file","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"bye - exits the application","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"Try \"help datetime\" for accepted datetime formats.","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"Try creating a task now! Type \"todo play with oreo\" or try \"help \u003ccommand\u003e\" to learn more about a specific command (e.g. \"help todo\").","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":25}},{"path":"src/main/resources/help/help.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"help\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Provide a simple guide for users.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"help\" - provide a list of all the commands and a brief description of what they do.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"\"help \u003ccommand\u003e\" - provide detailed description of the \u003ccommand\u003e specified, use this to learn more about the command and the proper syntax to use it.","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"\"help\" (shows list of all commands)","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"\"help delete\" (shows detailed explanation of delete command)","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":12}},{"path":"src/main/resources/help/list.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"list\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Displays the list of tasks you currently have. This includes the type of task, whether it is done and the date time (as specified).","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"list\" - Shows all the task that are recorded by the user.","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"see above","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/mark.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"mark\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Marks the task at the index specified as complete, or let the user know that it is already marked complete.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"mark \u003cindex\u003e\" - task at index becomes/stays complete. ","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\"mark 1\" (assuming task at position 1 on list is currently incomplete, it will be marked as complete)","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"\"mark 2\" (assuming task at position 2 on list is currently complete, it will remain complete)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":11}},{"path":"src/main/resources/help/modify.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"modify\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"same as \"edit\" and \"update\"","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"Opens editing mode for the task specified by the index. Task specified will appear in the text field for user to modify the task. modified task must follow the correct syntax when modifying.","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"User can type \"C\" or \"c\" to exit editing mode for the task and resume normal input.","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\"modify \u003cindex\u003e\" - opens editing mode on task specified in index and puts task in the text field for user to edit. User can make the necessary amends and input it to modify the specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"\"modify 1\" (task 1: TODO: play with oreo - command will enter editing mode on task 1 and display \"todo play with oreo\" in the text field for user to edit)","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"\"c\" exits editing mode wihout modifying the task","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":16}},{"path":"src/main/resources/help/save.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"save\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Saves all task as of current state to file while app continues to run.","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"save\" - saves current list of task to file.","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"see above","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/todo.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"todo\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Creates a non-time sensitive task.","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"todo \u003cdescription\u003e\" - creates a todo task with the specified description.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"\"todo play with oreo\" (creates a todo task called \"play with oreo\").","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":9}},{"path":"src/main/resources/help/unmark.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"unmark\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"Unmarks the task at the index specified as incomplete, or let the user know that it is still incomplete.","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\"unmark \u003cindex\u003e\" - task at index becomes/stays incomplete (unchecked). ","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\"unmark 1\" (assuming task at position 1 on list is currently complete, it will be marked as incomplete)","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"\"unmark 2\" (assuming task at position 2 on list is currently incomplete, it will remain incomplete)","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":11}},{"path":"src/main/resources/help/update.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"THE \"update\" COMMAND:","lastModifiedDate":"2023-09-21"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"same as \"modify\" and \"edit\"","lastModifiedDate":"2023-09-21"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"Opens editing mode for the task specified by the index. Task specified will appear in the text field for user to modify the task. modified task must follow the correct syntax when modifying.","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"User can type \"C\" or \"c\" to exit editing mode for the task and resume normal input.","lastModifiedDate":"2023-09-21"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"HOW TO USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\"update \u003cindex\u003e\" - opens editing mode on task specified in index and puts task in the text field for user to edit. User can make the necessary amends and input it to modify the specified task.","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"*note: index refers to the position of task in list","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"EXAMPLE USE:","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"\"update 1\" (task 1: TODO: play with oreo - command will enter editing mode on task 1 and display \"todo play with oreo\" in the textfield for user to edit)","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"\"c\" exits editing mode without editing the task.","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"dloh2236":16}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" minHeight\u003d\"-Infinity\" prefWidth\u003d\"423.0\" spacing\u003d\"5.0\" type\u003d\"HBox\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":" \u003cjavafx.scene.layout.HBox fx:id\u003d\"speechBubble\" alignment\u003d\"CENTER_RIGHT\" depthTest\u003d\"ENABLE\" maxHeight\u003d\"340.0\" maxWidth\u003d\"1.7976931348623157E308\" minHeight\u003d\"-Infinity\" opacity\u003d\"0.8\" styleClass\u003d\"dmSans\" style\u003d\"-fx-background-radius: 1em; -fx-background-color: #6495ED;\"\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" \u003cLabel fx:id\u003d\"dialog\" minHeight\u003d\"20.0\" text\u003d\"Label\" textFill\u003d\"WHITE\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" \u003cInsets left\u003d\"5.0\" right\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" \u003c/Label\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" \u003cInsets bottom\u003d\"5.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" \u003cInsets bottom\u003d\"7.0\" top\u003d\"7.0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" \u003c/javafx.scene.layout.HBox\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"30.0\" fitWidth\u003d\"30.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" \u003cInsets top\u003d\"7.0\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" \u003c/HBox.margin\u003e\u003c/ImageView\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" \u003cInsets left\u003d\"5.0\" right\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":37}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.effect.ColorAdjust?\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"700.0\" prefWidth\u003d\"500.0\" style\u003d\"-fx-background-color: #737C88;\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"oreo.ui.MainWindow\"\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" fitToHeight\u003d\"true\" fitToWidth\u003d\"true\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" pannable\u003d\"true\" prefHeight\u003d\"700.0\" prefWidth\u003d\"500.0\" style\u003d\"-fx-background-radius: 0.5em;\" styleClass\u003d\"dmSans\" vvalue\u003d\"1.0\" AnchorPane.bottomAnchor\u003d\"0.0\" AnchorPane.topAnchor\u003d\"0.0\"\u003e","lastModifiedDate":"2023-09-23"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" maxHeight\u003d\"1.7976931348623157E308\" prefHeight\u003d\"700.0\" prefWidth\u003d\"400.0\" style\u003d\"-fx-background-color: #232E38; -fx-border-color: #28313D;\"\u003e","lastModifiedDate":"2023-09-23"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" \u003cInsets bottom\u003d\"35.0\" left\u003d\"10.0\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" \u003c/padding\u003e\u003c/VBox\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" \u003cTextField fx:id\u003d\"userInput\" cache\u003d\"true\" layoutX\u003d\"2.0\" layoutY\u003d\"567.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"30.0\" prefWidth\u003d\"470.0\" promptText\u003d\"Type something here...\" style\u003d\"-fx-background-radius: 1em;\" styleClass\u003d\"dmSans\" AnchorPane.bottomAnchor\u003d\"10.0\" AnchorPane.leftAnchor\u003d\"15.0\"\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" \u003ceffect\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" \u003cColorAdjust /\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" \u003c/effect\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" \u003cFont name\u003d\"DMSans-Medium\" size\u003d\"11.0\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" \u003c/font\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" \u003cInsets left\u003d\"10.0\" right\u003d\"35.0\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" \u003c/padding\u003e\u003c/TextField\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" \u003cTextField fx:id\u003d\"userInputEdit\" cache\u003d\"true\" layoutX\u003d\"2.0\" layoutY\u003d\"567.0\" onAction\u003d\"#handleEditInput\" prefHeight\u003d\"30.0\" prefWidth\u003d\"470.0\" promptText\u003d\"Type something here...\" style\u003d\"-fx-background-radius: 1em;\" styleClass\u003d\"dmSans\" visible\u003d\"false\" AnchorPane.bottomAnchor\u003d\"10.0\" AnchorPane.leftAnchor\u003d\"15.0\"\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" \u003cFont name\u003d\"DMSans-Medium\" size\u003d\"11.0\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" \u003c/font\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":" \u003c/TextField\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" \u003cImageView fx:id\u003d\"editButton\" fitHeight\u003d\"150.0\" fitWidth\u003d\"24.0\" layoutX\u003d\"455.0\" layoutY\u003d\"663.0\" onMousePressed\u003d\"#handleEditInput\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" visible\u003d\"false\" AnchorPane.bottomAnchor\u003d\"13.0\"\u003e","lastModifiedDate":"2023-09-23"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" \u003cimage\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" \u003cImage url\u003d\"@../images/editbutton.png\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" \u003c/image\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" \u003cImageView fx:id\u003d\"sendButton\" accessibleRole\u003d\"BUTTON\" depthTest\u003d\"ENABLE\" fitHeight\u003d\"86.0\" fitWidth\u003d\"25.0\" layoutX\u003d\"456.0\" layoutY\u003d\"663.0\" onMousePressed\u003d\"#handleUserInput\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" AnchorPane.bottomAnchor\u003d\"13.0\"\u003e","lastModifiedDate":"2023-09-23"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" \u003cimage\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" \u003cImage url\u003d\"@../images/sendbutton.png\" /\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" \u003c/image\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-07"}],"authorContributionMap":{"dloh2236":49}},{"path":"src/test/java/oreo/command/AddCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.command;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.task.TaskList;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.task.ToDo;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"public class AddCommandTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" public void execute_addCommandTodoToTaskList_success() {","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" String description \u003d \"read book\";","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" Scanner tokeniser \u003d new Scanner(description);","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":" AddCommand ac \u003d new AddCommand(\"todo\", tokeniser);","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" ac.execute(tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" assertEquals(tasks.get(0).toString(),","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" new ToDo(\"read book\").toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" public void execute_addCommandInvalidInput_tasksNoChange() {","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":" String description \u003d \"read book\";","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" Scanner tokeniser \u003d new Scanner(description);","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" AddCommand ac \u003d new AddCommand(\"abc\", tokeniser);","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" ac.execute(tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" assertEquals(0,","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" tasks.getNumberOfTask());","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"dloh2236":34}},{"path":"src/test/java/oreo/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"package oreo.task;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalCommandException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"import oreo.exception.IllegalDateTimeException;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"public class TaskTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":" public void generateTask_generateTodoTask_success() throws IllegalCommandException,","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":" assertEquals(new ToDo(\"read book\").toString(),","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":" Task.generateTask(\"todo\", new Scanner(\"read book\")).toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":" public void generateTask_generateDeadlineTask_success() throws IllegalCommandException,","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":" assertEquals(new Deadline(\"return book\", \"Sep 3 2023\", null).toString(),","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":" Task.generateTask(\"deadline\",","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"return book /by 03/09/2023\")).toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":" public void generateTask_generateEventTask_success() throws IllegalCommandException,","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":" IllegalDateTimeException {","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"dloh2236"},"content":" assertEquals(new Event(\"study at cafe\", \"Sep 3 2023\", \"3:00 PM\",","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"dloh2236"},"content":" \"Sep 3 2023\", \"4:00 PM\").toString(),","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"dloh2236"},"content":" Task.generateTask(\"event\",","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"study at cafe /from 03/09/2023, 1500 /to 03/09/2023, 1600\"))","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"dloh2236"},"content":" .toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"dloh2236"},"content":" public void generateTask_invalidCommand_exceptionThrown() throws IllegalDateTimeException {","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"dloh2236"},"content":" assertEquals(0, Task.generateTask(\"abc\",","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"\")));","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"dloh2236"},"content":" fail();","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalCommandException e){","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"dloh2236"},"content":" assertEquals(\"I don\u0027t think I can process an empty task\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"dloh2236"},"content":" + \"do you want to try again?\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"dloh2236"},"content":" public void generateTask_invalidDate_exceptionThrown() throws IllegalCommandException {","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"dloh2236"},"content":" assertEquals(0, Task.generateTask(\"deadline\",","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"return book /by 2023-09-03\")));","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"dloh2236"},"content":" fail();","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e){","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"dloh2236"},"content":" assertEquals(\"Date or date format is invalid. Time or time format is invalid. \"","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"dloh2236"},"content":" + \"If you are putting both date and time, you might have missed \\\", \\\" \"","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"dloh2236"},"content":" + \"between the date and the time\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"dloh2236"},"content":" \" (e.g. \\\"1 Jan, 5pm\\\").\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"dloh2236"},"content":" \"Try \\\"help datetime\\\" to learn more about accepted date time formats\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"dloh2236"},"content":" public void generateTask_invalidTime_exceptionThrown() throws IllegalCommandException {","lastModifiedDate":"2023-09-03"},{"lineNumber":67,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"dloh2236"},"content":" assertEquals(0, Task.generateTask(\"deadline\",","lastModifiedDate":"2023-09-03"},{"lineNumber":69,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"return book /by 03/09/2023, 36pm\")));","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"dloh2236"},"content":" fail();","lastModifiedDate":"2023-09-03"},{"lineNumber":71,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e){","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"dloh2236"},"content":" assertEquals(\"Time or time format is invalid. \", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"dloh2236"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":77,"author":{"gitId":"dloh2236"},"content":" public void generateTask_invalidFromToTime_exceptionThrown() throws IllegalCommandException {","lastModifiedDate":"2023-09-03"},{"lineNumber":78,"author":{"gitId":"dloh2236"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":79,"author":{"gitId":"dloh2236"},"content":" assertEquals(0, Task.generateTask(\"event\",","lastModifiedDate":"2023-09-03"},{"lineNumber":80,"author":{"gitId":"dloh2236"},"content":" new Scanner(\"study /from 03/09/2023, 1600 /to 03/09/2023, 1400\")));","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"dloh2236"},"content":" fail();","lastModifiedDate":"2023-09-03"},{"lineNumber":82,"author":{"gitId":"dloh2236"},"content":" } catch (IllegalDateTimeException e){","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"dloh2236"},"content":" assertEquals(\"Sorry but to time cannot be before from time\\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"dloh2236"},"content":" \"2:00 PM is before 4:00 PM\", e.getMessage());","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":86,"author":{"gitId":"dloh2236"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":87,"author":{"gitId":"dloh2236"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"dloh2236":87}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"dloh2236"},"content":"todo read book","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"dloh2236"},"content":"deadline return book /by 03/09/2023 1400","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"dloh2236"},"content":"deadline leave library /by 03/09/2023 1500","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"dloh2236"},"content":"event dinner with friends /from 03/09/2023 1800 /to 03/09/2023 2100","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"dloh2236"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"dloh2236"},"content":"mark 1","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"dloh2236"},"content":"mark 1","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"dloh2236"},"content":"mark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"dloh2236"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"dloh2236"},"content":"unmark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"dloh2236"},"content":"unmark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"dloh2236"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"dloh2236"},"content":"delete 1","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"dloh2236"},"content":"mark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"dloh2236"},"content":"delete 2","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"dloh2236"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"dloh2236"},"content":"mark 1","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"dloh2236"},"content":"mark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"dloh2236"},"content":"unmark 2","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"dloh2236"},"content":"delete 2","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"dloh2236"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"dloh2236"},"content":"mark","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"dloh2236"},"content":"unmark","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"dloh2236"},"content":"todo","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"dloh2236"},"content":"deadline","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"dloh2236"},"content":"event","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"dloh2236"},"content":"deadline finish code /from 02/09/2023 2359","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"dloh2236"},"content":"event finish coding time /by 02/09/2023 2359","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"dloh2236"},"content":"event start coding /from 02/09/2023","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"dloh2236"},"content":"bye","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"dloh2236":30}}] diff --git a/dloh2236_ip_master/commits.json b/dloh2236_ip_master/commits.json index 3018e297..58c09d53 100644 --- a/dloh2236_ip_master/commits.json +++ b/dloh2236_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"dloh2236":[{"date":"2023-08-23","commitResults":[{"hash":"4f153951d45587415f6053aba0f8c3b377a726d7","isMergeCommit":false,"messageTitle":"Changed chatbot name, greet and exit message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"9686c9389e4c4f6ed5666cbd1f75159e9654890f","isMergeCommit":false,"messageTitle":"Changed the greet message to include a doggy","messageBody":"","tags":["Level-0.1"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"3561c0b9e9f53308c7a6bbded418d43118f47a7a","isMergeCommit":false,"messageTitle":"Oreo now echoes back command, exit message when \u0027bye\u0027 command input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"011248689e2f5a60b3085268b4a492a78f9d1308","isMergeCommit":false,"messageTitle":"Added ability to add text and display back when requested","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":3}}}]},{"date":"2023-08-24","commitResults":[{"hash":"4fcc49bbbde441ef4e489e1b42e777cf5df8adc4","isMergeCommit":false,"messageTitle":"Added a textformat class to clean up reply formatting by auto indenting and adding of horizontal lines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":30}}},{"hash":"194deb7d4f5b3c0fda199259867a6e85e83f8c97","isMergeCommit":false,"messageTitle":"Created Task Class that handles Task methods and attributes Re-did Duke file to declaring attributes and methods and main function just runs an instance of Duke","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":38}}},{"hash":"a9149ff35080b00def19cc30403bf45d1fbd6f32","isMergeCommit":false,"messageTitle":"Checks if Task being marked is marked or unmarked already outputs a different message If all task completes, send all complete message Checks if mark/unmark is valid Allow for adding of tasks called mark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":18}}},{"hash":"0ce41b84f7ec4f6224b55cdede46afd845c1b120","isMergeCommit":false,"messageTitle":"Added Deadline, Event, ToDo classes that are child classes of Task Implemented a way to set deadline event and to when given the appropriate command Also able to be manipulated like a task like before","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":43}}},{"hash":"4cb07895c94489944ff745de83b870dca8d645ee","isMergeCommit":false,"messageTitle":"Implemented delete function, changed taskList to ArrayList","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":9}}}]},{"date":"2023-08-25","commitResults":[{"hash":"067f94769f68a788a0612762a1df4cd672e252ff","isMergeCommit":false,"messageTitle":"Added Exception catching of illegal commands","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":9}}}]},{"date":"2023-08-26","commitResults":[{"hash":"23768ee8005dd128809ba30d771ac1be1fcf7fb3","isMergeCommit":false,"messageTitle":"Enhanced the erroneous command to handle more errors. Should cover all wrong input of commands including the lack of commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":24}}},{"hash":"6e223a9bb3753a87e04dae3022fa492fee0bbdd9","isMergeCommit":false,"messageTitle":"minor change to empty list message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"349db5e2db95fbecea5da655c27a8bc2937387d4","isMergeCommit":false,"messageTitle":"Fixed several logic errors for error input, improved readability of some messages and changed handling of certain errors to more relevant methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":17}}},{"hash":"c0cd980724d32630b06bd0231fa02bbf769845e4","isMergeCommit":false,"messageTitle":"wrote text-ui-test, program passes test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":31,"deletions":0},"bat":{"insertions":0,"deletions":21}}}]},{"date":"2023-08-29","commitResults":[{"hash":"99f5a64d106127755bc47d7de2dbb558f7dbfd84","isMergeCommit":false,"messageTitle":"Implement a save function that writes a .txt file onto the hardisk with items on list reads a duke.txt if exist, if not creates one. when bye command is inputted, duke write the task onto duke.txt file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":0}}},{"hash":"18dac4f4eb682394cf337b81b36da7c1c9b559de","isMergeCommit":false,"messageTitle":"Custom greet message based on if saved task exist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"f6d0748013babcaa383e4eadf3c7323d42a776e5","isMergeCommit":false,"messageTitle":"Comment run method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"d0e65fbcd83fdcf45e2983dd58f583ecefde81f7","isMergeCommit":false,"messageTitle":"debugging merge issue for git","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":0}}},{"hash":"9f2246fa8e1d887f48a3144732dd0510279c9694","isMergeCommit":false,"messageTitle":"add Duke.java to commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":4}}},{"hash":"6c3120c19ba75239a9c74670ea148f2cc421c7a2","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":44}}},{"hash":"a05809b73071967aa75abe3d3edc52abdd2a25c7","isMergeCommit":false,"messageTitle":"Merge conflict resolve in master","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"38c4bdef12ed98ea7833446f873d1d435b9c88f1","isMergeCommit":true,"messageTitle":"Resolve conflict again","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"681cab1fb8621b3f74a6df6e2a9850c94953b3f1","isMergeCommit":true,"messageTitle":"Resolve conflict for pull","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"3b48c61d111bbb8a66aa15a509ad6dfd3ba36c79","isMergeCommit":false,"messageTitle":"Fix filepath to work for with TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"6f90c37067d0e66a5bfcb7a14675f56b0e5498eb","isMergeCommit":false,"messageTitle":"Implement basic date time parser when adding new tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":9}}}]},{"date":"2023-08-31","commitResults":[{"hash":"377e17c337fdebe4b5dfdda4c5b41a6ec8d76f20","isMergeCommit":false,"messageTitle":"Fixed file writing and file reader to read new time format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":42}}},{"hash":"546f70700c59a7db7fc6b098c05d5c871714ca0c","isMergeCommit":false,"messageTitle":"Change date format input","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"7e0127383785436dc62ca2a7382afd0cf194a403","isMergeCommit":false,"messageTitle":"Catch all invalid time inputs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":11}}},{"hash":"6b545079c79764bf86fdf58bca47a5c5e9dc4334","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 to master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"70733d66ed90aa1c15e218e70122003c07826ac1","isMergeCommit":false,"messageTitle":"Clean up import list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"692f79e40168fe04e8a069385cabf3f419f470cb","isMergeCommit":false,"messageTitle":"Minor bug fix for list() and Text UI output","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}}]},{"date":"2023-09-01","commitResults":[{"hash":"b7f6d17ee43b0bd2d7efdd33ab04f079812f5505","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-MoreOOP to update code for branch-A-OOP","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-02","commitResults":[{"hash":"6152c357d64538e9e09799c8b3a72bcfc51f7de8","isMergeCommit":false,"messageTitle":"Implemented UI class that handles text UI of the chatbot","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":8},"java":{"insertions":94,"deletions":77}}},{"hash":"e71b9fe9c71646b775c558e34a2f6874c1b5ed63","isMergeCommit":false,"messageTitle":"Implement Storage and TaskList Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":183,"deletions":122}}},{"hash":"f0bca7b4ea6126815a581ebdac26fac76ac90327","isMergeCommit":false,"messageTitle":"Bug fixes for some ui messages not printing Further OOP for TaskList to handle mark/unmark delete methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":56}}},{"hash":"ae3f70ff30563318d17c9493f6f39ad1d6bf69cc","isMergeCommit":false,"messageTitle":"Implement Parser Class, Command Class and its child classes, main logic refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":160,"deletions":60}}},{"hash":"253ecb5b33b414789ab38aef5635e86334b11dd7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"67c92cdbb761f953f54666abb68dd39c0054142b","isMergeCommit":false,"messageTitle":"Change bot name to Oreo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":11}}},{"hash":"923ea098947c314018d013050bb2e3bb6a95e4bb","isMergeCommit":false,"messageTitle":"Package and import packages accordingly","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":31}}},{"hash":"3610e8e4a6de9a9a0a6caf2cbae3ed337cf418e8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-03","commitResults":[{"hash":"dc2e3dd1fe504c7df21d838de3860e32db767211","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027 add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"6f2010dfafcc3eddd3dc5073ebd60afcd8858375","isMergeCommit":false,"messageTitle":"Add unit test for AddCommand Class to test for valid and invalid inputs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"14cc70052378d8a2736d914eb66cff7f5004d542","isMergeCommit":false,"messageTitle":"JUnit test on Task generateTask method for valid and invalid inputs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":1}}},{"hash":"bf1eccf1bd455f969b513d0161163f12ee2ac22c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Junit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"17974bf3f506bffacde8ef96cc6d5658566e3b8a","isMergeCommit":false,"messageTitle":"Change acrchiveBaseName to \u0027oreo\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"9fee636c3faede4388bf2da6323d98907da17830","isMergeCommit":false,"messageTitle":"Implement find command for oreo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":0}}},{"hash":"4d590c384cb8a38bf17c7441a08cdb6ce28f4ffb","isMergeCommit":false,"messageTitle":"change boolean variable name to comply with coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"11bfea162ff9f31be09826edb856de4856e750ad","isMergeCommit":false,"messageTitle":"Finish coding standard correction","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":61}}},{"hash":"86a169097cf25edba8b6b53a3196888f139e7e3a","isMergeCommit":false,"messageTitle":"Add Javadocs to important classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":299,"deletions":12}}},{"hash":"935e6524427671b4f36ae8d16ec1b331bca53dfc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"d628746add70c484330328b93889456ea2a5d85a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/oreo/task/Task.java\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"ad96d07739851a2cc9e338d146bedcf7747f4fda","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/oreo/task/Task.java\n#\tsrc/main/java/oreo/task/TaskList.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"43323b6d6268e828da8a50bc4a415519d1f1aa20","isMergeCommit":false,"messageTitle":"Add javadocs to find methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2023-09-06","commitResults":[{"hash":"c0409a0db8b6d3fe3d94f203270b3e22cdd268f2","isMergeCommit":false,"messageTitle":"Minor change to message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"fa41a42f7145a05d8a04db5692a77379c7d1f4b1","isMergeCommit":false,"messageTitle":"Implement checkstyle build with gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":4,"deletions":0}}},{"hash":"f7c17e72731334ffda349f141c2da8bdcbe8367b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-07","commitResults":[{"hash":"633ad8ff1708dddc956dd50e3e1ed443f7abe4e7","isMergeCommit":false,"messageTitle":"Implment GUI and integrated logic with GUI (basic)","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":14,"deletions":0},"fxml":{"insertions":52,"deletions":0},"java":{"insertions":261,"deletions":80}}}]},{"date":"2023-09-12","commitResults":[{"hash":"5a89997959e2a2e410b0bfbe54554884ef7702c8","isMergeCommit":false,"messageTitle":"Improve GUI for Oreo","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":33,"deletions":19}}},{"hash":"650a0aa24cd8e311fe8ca616ae4a23422d2f5824","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-16","commitResults":[{"hash":"eddcf6352fa359177fcc03f8593540335ce34ee3","isMergeCommit":false,"messageTitle":"Build gradle file: change mainClass set to new .java file after GUI integration","messageBody":"Change as now Launcher.java is the main file that starts the application\n\nSimple change in file name for main file\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"9b020209a7dbf7d1e9d77ec805161a5e9c348106","isMergeCommit":false,"messageTitle":"Parser Class: pass invalid command to a AddCommand instance where exceptions are further manage","messageBody":"Parser Class and Task Class: This cause clutter in the Task File as it has to handle invalid commands which is not relevant to that Class\n\nCreate a new Command Subclass called InvalidCommand that throws the exception when execute() is called. Parser Class now returns a InvalidCommand Exception as its default case\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":12}}},{"hash":"db5b0aebed6c4e89bbea7ed70029cb502359281c","isMergeCommit":false,"messageTitle":"Add assertions to document important assumptions that should hold","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":8}}},{"hash":"464d05fc4ef79c229e828e81475c25472dcc126e","isMergeCommit":true,"messageTitle":"Merge pull request #1 from dloh2236/branch-A-Assertions","messageBody":"Add assertions to document important assumptions that should hold","tags":["A-Assertions"],"fileTypesAndContributionMap":{}},{"hash":"acd080945eb7a533754da287cd98469812322fb5","isMergeCommit":false,"messageTitle":"Refactor Task Class and TaskList Class","messageBody":"Task Class: Improve code quality by reducing nested if-else statements to more methods to handle sub cases\n\nTasklist Class: Break if-else statement up to more logical flow, catch erroroneous input first before handling proper data\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":68}}},{"hash":"74937f7d78b9655370f04e8984c059c06a17df55","isMergeCommit":true,"messageTitle":"Merge pull request #3 from dloh2236/branch-A-CodeQuality","messageBody":"Refactor Task Class and TaskList Class","fileTypesAndContributionMap":{}}]},{"date":"2023-09-18","commitResults":[{"hash":"9ea8110f86a40622a4b9702cb5c84938c8debc32","isMergeCommit":false,"messageTitle":"Add edit/update/modify function","messageBody":"Oreo Class: Add cache to pass information between scenes\nCommand Class: Implements a new method that execute task while in edit mode\nParser Class: Parse new command, parse command in edit mode\nMainWindow Class: Implement new method that handles edits (new edit button/textfield calls handleEditInput()). Implement handler that transits chat from normal user input mode to edit mode, cahe command and task to edit\nTask Classes: Implement methods prints in edit format for user to edit.\n","tags":["C-Update","BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":277,"deletions":8}}},{"hash":"1f3cefe81c11776749cd65572a2babd3f11b5180","isMergeCommit":false,"messageTitle":"UI improvements: Dialogbox now has different colour for oreo Change how different task is displayed MainWindow now has a edit mode with different textfield and button to call a different function","messageBody":"","tags":["A-Personality","A-BetterGui"],"fileTypesAndContributionMap":{"fxml":{"insertions":17,"deletions":3},"java":{"insertions":67,"deletions":20}}},{"hash":"490f9c4760c1dbe2e5364ed61a8b3c845d5d830e","isMergeCommit":true,"messageTitle":"Merge pull request #4 from dloh2236/branch-C-Update","messageBody":"Add edit/update/modify function","fileTypesAndContributionMap":{}},{"hash":"cb6a28e88c4df40ad8f386c52a1bbd7df3a4f85e","isMergeCommit":true,"messageTitle":"Merge pull request #5 from dloh2236/branch-A-BetterGui","messageBody":"Branch a better gui","fileTypesAndContributionMap":{}},{"hash":"87fbba27fe8dbafa3dbf4ee517ddb07340b34ad9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/dloh2236/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"00119bb6b8c40dabeda991036aa788a6a539c144","isMergeCommit":false,"messageTitle":"Implement mark/unmark all and delete all/clear","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"1cbed0a5fb06f652c264d2f5522443eac68fd4c7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Self-AllOps\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-21","commitResults":[{"hash":"17cd67be2bede9c2b9c9bfddd624238efa7dfaf3","isMergeCommit":false,"messageTitle":"Minor Change for ui class to formatter class as it no longer handles ui. Refactoring of rest of the classes who use methods in the Formatter class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":124}}},{"hash":"324161c36ab805455b96833e11200daae7040cdf","isMergeCommit":false,"messageTitle":"Refactor TaskList class to let command processing be done by command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":130,"deletions":180}}},{"hash":"c488497bf9826b046e0ea81cf11473de9a4aa4f1","isMergeCommit":false,"messageTitle":"Implement help command, general help and more specific help","messageBody":"","tags":["C-Help"],"fileTypesAndContributionMap":{"txt":{"insertions":234,"deletions":0},"java":{"insertions":81,"deletions":0}}},{"hash":"73a06bf29f87019e279233179730373e4d563a8b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-C-Help\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d51c9c970478771acb358852cfbe772a821522ac","isMergeCommit":false,"messageTitle":"Improve time parser to accept more date and time formats and different combinations. Now date time formatting is more natural and easy to use for users","messageBody":"","tags":["C-NaturalDates","A-MoreErrorHandling"],"fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":54}}},{"hash":"167fa5db3b8cbfd8f2b10be3a6f1a630e893b895","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-C-NaturalDates\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"160d4ac7f7ac1155d6888d5b442252c05d6c70bd","isMergeCommit":false,"messageTitle":"Minor change, refactor to message output and code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":9}}}]},{"date":"2023-09-22","commitResults":[{"hash":"f6d2b8b7f1798deff2d2e147570691f6a3c215e7","isMergeCommit":false,"messageTitle":"UI improvments","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":36,"deletions":30},"java":{"insertions":41,"deletions":1}}},{"hash":"d340081711c70ec8ff55a88d4a0f13bbc8bb26d8","isMergeCommit":false,"messageTitle":"Allow more inputs of datetime such as \"22 sep\" no need for \"22 Sep\" Refactor date time parsing mechanism so error messages are more specific Refactor get next date of time occurence to consider event ending times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":22}}},{"hash":"71b3a03f805a357587ef8405edaebae8e28297f3","isMergeCommit":false,"messageTitle":"Further improvments on command format error message and checking process","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":15}}},{"hash":"ffe928470f8d2633994d83844c514f83e19bfd0b","isMergeCommit":false,"messageTitle":"Edit help txt files for grammar, spelling and made some easier and more useful to users","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":60,"deletions":58}}},{"hash":"5eba717be97bccf943170bb7d406358ea46af3b0","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":516,"deletions":76}}},{"hash":"b91b1826e36ad86b0b2a63f5dcb8730c46507830","isMergeCommit":false,"messageTitle":"Added more unit test","messageBody":"","tags":["A-MoreTesting"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":14}}},{"hash":"1f6b2c1d6ebb079c6ad064a36d0f110529b8aec5","isMergeCommit":false,"messageTitle":"A-UserGuide","messageBody":"Added User Guide","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":98,"deletions":15}}}]},{"date":"2023-09-23","commitResults":[{"hash":"08e3b529fd6c4fbd167dcdb970786834a982e589","isMergeCommit":true,"messageTitle":"Merge pull request #6 from dloh2236/branch-A-UserGuide","messageBody":"A-UserGuide","fileTypesAndContributionMap":{}},{"hash":"d6e631b15c356debe3d0737c20b1f3f4d2993368","isMergeCommit":false,"messageTitle":"Minor changes","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5f020d2d9398b3b9a69851890bd57bdbb012ee5d","isMergeCommit":false,"messageTitle":"Minor bug fix to file reading and UI improvement to fix width and allow flexible height","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":4,"deletions":4},"java":{"insertions":10,"deletions":1}}},{"hash":"d51c1803e5c09480192a4ddccd91e41fbc6e2d13","isMergeCommit":false,"messageTitle":"New User Guide","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":79,"deletions":0}}}]},{"date":"2023-09-24","commitResults":[{"hash":"e84346c65faa6add8777deefd7054870191d6fb1","isMergeCommit":false,"messageTitle":"Add more date formats to parse, some bug fixes with regards to date time format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"5c8e012f6379b910d22b2173d1e337a98ece0c86","isMergeCommit":false,"messageTitle":"Update and rectified README and help.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":30,"deletions":14},"md":{"insertions":525,"deletions":153}}},{"hash":"b70174dd6e29fc35aaa950384b8c115cc8d920bc","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":98,"deletions":118}}},{"hash":"3b3dcd7204db9ed565b7e5d7dc383c82c7bce3ae","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":114,"deletions":112}}},{"hash":"29e761345afa6458e4bc19826f486563b773d252","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":47,"deletions":24}}},{"hash":"d46df9b3a6df2f1fdac4e97db3db725663b2b73c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":14,"deletions":8}}}]},{"date":"2023-09-25","commitResults":[{"hash":"484163ef00295ea0b5b7cd9f6100ba70bf27071a","isMergeCommit":false,"messageTitle":"Minor Bug fixes - Help command handles wrong commands like a champ now - DateTime parsing logic for events is now improved - oreo can math out the dates better - Fixed DateTime parser for all Java 11!","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":1,"deletions":1},"java":{"insertions":126,"deletions":47}}},{"hash":"d3f2ac5e9b802445f545bae10159f41c86745dc9","isMergeCommit":false,"messageTitle":"Update README.md to reflect datetime parser fixed for all java 11","messageBody":"","tags":["A-Releasev1.0.1"],"fileTypesAndContributionMap":{"md":{"insertions":6,"deletions":21}}},{"hash":"2ebedbc2818180f681c76efb45cd44972141174d","isMergeCommit":false,"messageTitle":"Update README.md for latest version 1.0.1","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"dloh2236":{"java":2657,"md":534,"fxml":86,"sh":0,"bat":0,"gradle":21,"txt":282}},"authorContributionVariance":{"dloh2236":117997.734},"authorDisplayNameMap":{"dloh2236":"CS2103T-W09-2 LOH ..NIEL"}} +{"authorDailyContributionsMap":{"dloh2236":[{"date":"2023-08-23","commitResults":[{"hash":"4f153951d45587415f6053aba0f8c3b377a726d7","isMergeCommit":false,"messageTitle":"Changed chatbot name, greet and exit message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"9686c9389e4c4f6ed5666cbd1f75159e9654890f","isMergeCommit":false,"messageTitle":"Changed the greet message to include a doggy","messageBody":"","tags":["Level-0.1"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"3561c0b9e9f53308c7a6bbded418d43118f47a7a","isMergeCommit":false,"messageTitle":"Oreo now echoes back command, exit message when \u0027bye\u0027 command input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":10}}},{"hash":"011248689e2f5a60b3085268b4a492a78f9d1308","isMergeCommit":false,"messageTitle":"Added ability to add text and display back when requested","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":3}}}]},{"date":"2023-08-24","commitResults":[{"hash":"4fcc49bbbde441ef4e489e1b42e777cf5df8adc4","isMergeCommit":false,"messageTitle":"Added a textformat class to clean up reply formatting by auto indenting and adding of horizontal lines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":30}}},{"hash":"194deb7d4f5b3c0fda199259867a6e85e83f8c97","isMergeCommit":false,"messageTitle":"Created Task Class that handles Task methods and attributes Re-did Duke file to declaring attributes and methods and main function just runs an instance of Duke","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":38}}},{"hash":"a9149ff35080b00def19cc30403bf45d1fbd6f32","isMergeCommit":false,"messageTitle":"Checks if Task being marked is marked or unmarked already outputs a different message If all task completes, send all complete message Checks if mark/unmark is valid Allow for adding of tasks called mark","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":18}}},{"hash":"0ce41b84f7ec4f6224b55cdede46afd845c1b120","isMergeCommit":false,"messageTitle":"Added Deadline, Event, ToDo classes that are child classes of Task Implemented a way to set deadline event and to when given the appropriate command Also able to be manipulated like a task like before","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":101,"deletions":43}}},{"hash":"4cb07895c94489944ff745de83b870dca8d645ee","isMergeCommit":false,"messageTitle":"Implemented delete function, changed taskList to ArrayList","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":9}}}]},{"date":"2023-08-25","commitResults":[{"hash":"067f94769f68a788a0612762a1df4cd672e252ff","isMergeCommit":false,"messageTitle":"Added Exception catching of illegal commands","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":9}}}]},{"date":"2023-08-26","commitResults":[{"hash":"23768ee8005dd128809ba30d771ac1be1fcf7fb3","isMergeCommit":false,"messageTitle":"Enhanced the erroneous command to handle more errors. Should cover all wrong input of commands including the lack of commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":24}}},{"hash":"6e223a9bb3753a87e04dae3022fa492fee0bbdd9","isMergeCommit":false,"messageTitle":"minor change to empty list message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"349db5e2db95fbecea5da655c27a8bc2937387d4","isMergeCommit":false,"messageTitle":"Fixed several logic errors for error input, improved readability of some messages and changed handling of certain errors to more relevant methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":17}}},{"hash":"c0cd980724d32630b06bd0231fa02bbf769845e4","isMergeCommit":false,"messageTitle":"wrote text-ui-test, program passes test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":31,"deletions":0},"bat":{"insertions":0,"deletions":21}}}]},{"date":"2023-08-29","commitResults":[{"hash":"99f5a64d106127755bc47d7de2dbb558f7dbfd84","isMergeCommit":false,"messageTitle":"Implement a save function that writes a .txt file onto the hardisk with items on list reads a duke.txt if exist, if not creates one. when bye command is inputted, duke write the task onto duke.txt file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":0}}},{"hash":"18dac4f4eb682394cf337b81b36da7c1c9b559de","isMergeCommit":false,"messageTitle":"Custom greet message based on if saved task exist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":1}}}]},{"date":"2023-08-30","commitResults":[{"hash":"f6d0748013babcaa383e4eadf3c7323d42a776e5","isMergeCommit":false,"messageTitle":"Comment run method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"d0e65fbcd83fdcf45e2983dd58f583ecefde81f7","isMergeCommit":false,"messageTitle":"debugging merge issue for git","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":0}}},{"hash":"9f2246fa8e1d887f48a3144732dd0510279c9694","isMergeCommit":false,"messageTitle":"add Duke.java to commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":4}}},{"hash":"6c3120c19ba75239a9c74670ea148f2cc421c7a2","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":44}}},{"hash":"a05809b73071967aa75abe3d3edc52abdd2a25c7","isMergeCommit":false,"messageTitle":"Merge conflict resolve in master","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"38c4bdef12ed98ea7833446f873d1d435b9c88f1","isMergeCommit":true,"messageTitle":"Resolve conflict again","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"681cab1fb8621b3f74a6df6e2a9850c94953b3f1","isMergeCommit":true,"messageTitle":"Resolve conflict for pull","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"3b48c61d111bbb8a66aa15a509ad6dfd3ba36c79","isMergeCommit":false,"messageTitle":"Fix filepath to work for with TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"6f90c37067d0e66a5bfcb7a14675f56b0e5498eb","isMergeCommit":false,"messageTitle":"Implement basic date time parser when adding new tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":9}}}]},{"date":"2023-08-31","commitResults":[{"hash":"377e17c337fdebe4b5dfdda4c5b41a6ec8d76f20","isMergeCommit":false,"messageTitle":"Fixed file writing and file reader to read new time format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":42}}},{"hash":"546f70700c59a7db7fc6b098c05d5c871714ca0c","isMergeCommit":false,"messageTitle":"Change date format input","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"7e0127383785436dc62ca2a7382afd0cf194a403","isMergeCommit":false,"messageTitle":"Catch all invalid time inputs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":11}}},{"hash":"6b545079c79764bf86fdf58bca47a5c5e9dc4334","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027 to master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"70733d66ed90aa1c15e218e70122003c07826ac1","isMergeCommit":false,"messageTitle":"Clean up import list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":6}}},{"hash":"692f79e40168fe04e8a069385cabf3f419f470cb","isMergeCommit":false,"messageTitle":"Minor bug fix for list() and Text UI output","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":4}}}]},{"date":"2023-09-01","commitResults":[{"hash":"b7f6d17ee43b0bd2d7efdd33ab04f079812f5505","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-MoreOOP to update code for branch-A-OOP","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-02","commitResults":[{"hash":"6152c357d64538e9e09799c8b3a72bcfc51f7de8","isMergeCommit":false,"messageTitle":"Implemented UI class that handles text UI of the chatbot","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":8},"java":{"insertions":94,"deletions":77}}},{"hash":"e71b9fe9c71646b775c558e34a2f6874c1b5ed63","isMergeCommit":false,"messageTitle":"Implement Storage and TaskList Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":183,"deletions":122}}},{"hash":"f0bca7b4ea6126815a581ebdac26fac76ac90327","isMergeCommit":false,"messageTitle":"Bug fixes for some ui messages not printing Further OOP for TaskList to handle mark/unmark delete methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":56}}},{"hash":"ae3f70ff30563318d17c9493f6f39ad1d6bf69cc","isMergeCommit":false,"messageTitle":"Implement Parser Class, Command Class and its child classes, main logic refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":160,"deletions":60}}},{"hash":"253ecb5b33b414789ab38aef5635e86334b11dd7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"67c92cdbb761f953f54666abb68dd39c0054142b","isMergeCommit":false,"messageTitle":"Change bot name to Oreo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":11}}},{"hash":"923ea098947c314018d013050bb2e3bb6a95e4bb","isMergeCommit":false,"messageTitle":"Package and import packages accordingly","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":31}}},{"hash":"3610e8e4a6de9a9a0a6caf2cbae3ed337cf418e8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-03","commitResults":[{"hash":"dc2e3dd1fe504c7df21d838de3860e32db767211","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027 add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"6f2010dfafcc3eddd3dc5073ebd60afcd8858375","isMergeCommit":false,"messageTitle":"Add unit test for AddCommand Class to test for valid and invalid inputs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"14cc70052378d8a2736d914eb66cff7f5004d542","isMergeCommit":false,"messageTitle":"JUnit test on Task generateTask method for valid and invalid inputs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":1}}},{"hash":"bf1eccf1bd455f969b513d0161163f12ee2ac22c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Junit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"17974bf3f506bffacde8ef96cc6d5658566e3b8a","isMergeCommit":false,"messageTitle":"Change acrchiveBaseName to \u0027oreo\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"9fee636c3faede4388bf2da6323d98907da17830","isMergeCommit":false,"messageTitle":"Implement find command for oreo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":0}}},{"hash":"4d590c384cb8a38bf17c7441a08cdb6ce28f4ffb","isMergeCommit":false,"messageTitle":"change boolean variable name to comply with coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"11bfea162ff9f31be09826edb856de4856e750ad","isMergeCommit":false,"messageTitle":"Finish coding standard correction","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":61}}},{"hash":"86a169097cf25edba8b6b53a3196888f139e7e3a","isMergeCommit":false,"messageTitle":"Add Javadocs to important classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":299,"deletions":12}}},{"hash":"935e6524427671b4f36ae8d16ec1b331bca53dfc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"d628746add70c484330328b93889456ea2a5d85a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/oreo/task/Task.java\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"ad96d07739851a2cc9e338d146bedcf7747f4fda","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/oreo/task/Task.java\n#\tsrc/main/java/oreo/task/TaskList.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"43323b6d6268e828da8a50bc4a415519d1f1aa20","isMergeCommit":false,"messageTitle":"Add javadocs to find methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2023-09-06","commitResults":[{"hash":"c0409a0db8b6d3fe3d94f203270b3e22cdd268f2","isMergeCommit":false,"messageTitle":"Minor change to message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"fa41a42f7145a05d8a04db5692a77379c7d1f4b1","isMergeCommit":false,"messageTitle":"Implement checkstyle build with gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":4,"deletions":0}}},{"hash":"f7c17e72731334ffda349f141c2da8bdcbe8367b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-07","commitResults":[{"hash":"633ad8ff1708dddc956dd50e3e1ed443f7abe4e7","isMergeCommit":false,"messageTitle":"Implment GUI and integrated logic with GUI (basic)","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":14,"deletions":0},"fxml":{"insertions":52,"deletions":0},"java":{"insertions":261,"deletions":80}}}]},{"date":"2023-09-12","commitResults":[{"hash":"5a89997959e2a2e410b0bfbe54554884ef7702c8","isMergeCommit":false,"messageTitle":"Improve GUI for Oreo","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":33,"deletions":19}}},{"hash":"650a0aa24cd8e311fe8ca616ae4a23422d2f5824","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-16","commitResults":[{"hash":"eddcf6352fa359177fcc03f8593540335ce34ee3","isMergeCommit":false,"messageTitle":"Build gradle file: change mainClass set to new .java file after GUI integration","messageBody":"Change as now Launcher.java is the main file that starts the application\n\nSimple change in file name for main file\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"9b020209a7dbf7d1e9d77ec805161a5e9c348106","isMergeCommit":false,"messageTitle":"Parser Class: pass invalid command to a AddCommand instance where exceptions are further manage","messageBody":"Parser Class and Task Class: This cause clutter in the Task File as it has to handle invalid commands which is not relevant to that Class\n\nCreate a new Command Subclass called InvalidCommand that throws the exception when execute() is called. Parser Class now returns a InvalidCommand Exception as its default case\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":12}}},{"hash":"db5b0aebed6c4e89bbea7ed70029cb502359281c","isMergeCommit":false,"messageTitle":"Add assertions to document important assumptions that should hold","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":8}}},{"hash":"464d05fc4ef79c229e828e81475c25472dcc126e","isMergeCommit":true,"messageTitle":"Merge pull request #1 from dloh2236/branch-A-Assertions","messageBody":"Add assertions to document important assumptions that should hold","tags":["A-Assertions"],"fileTypesAndContributionMap":{}},{"hash":"acd080945eb7a533754da287cd98469812322fb5","isMergeCommit":false,"messageTitle":"Refactor Task Class and TaskList Class","messageBody":"Task Class: Improve code quality by reducing nested if-else statements to more methods to handle sub cases\n\nTasklist Class: Break if-else statement up to more logical flow, catch erroroneous input first before handling proper data\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":68}}},{"hash":"74937f7d78b9655370f04e8984c059c06a17df55","isMergeCommit":true,"messageTitle":"Merge pull request #3 from dloh2236/branch-A-CodeQuality","messageBody":"Refactor Task Class and TaskList Class","fileTypesAndContributionMap":{}}]},{"date":"2023-09-18","commitResults":[{"hash":"9ea8110f86a40622a4b9702cb5c84938c8debc32","isMergeCommit":false,"messageTitle":"Add edit/update/modify function","messageBody":"Oreo Class: Add cache to pass information between scenes\nCommand Class: Implements a new method that execute task while in edit mode\nParser Class: Parse new command, parse command in edit mode\nMainWindow Class: Implement new method that handles edits (new edit button/textfield calls handleEditInput()). Implement handler that transits chat from normal user input mode to edit mode, cahe command and task to edit\nTask Classes: Implement methods prints in edit format for user to edit.\n","tags":["C-Update","BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":277,"deletions":8}}},{"hash":"1f3cefe81c11776749cd65572a2babd3f11b5180","isMergeCommit":false,"messageTitle":"UI improvements: Dialogbox now has different colour for oreo Change how different task is displayed MainWindow now has a edit mode with different textfield and button to call a different function","messageBody":"","tags":["A-Personality","A-BetterGui"],"fileTypesAndContributionMap":{"fxml":{"insertions":17,"deletions":3},"java":{"insertions":67,"deletions":20}}},{"hash":"490f9c4760c1dbe2e5364ed61a8b3c845d5d830e","isMergeCommit":true,"messageTitle":"Merge pull request #4 from dloh2236/branch-C-Update","messageBody":"Add edit/update/modify function","fileTypesAndContributionMap":{}},{"hash":"cb6a28e88c4df40ad8f386c52a1bbd7df3a4f85e","isMergeCommit":true,"messageTitle":"Merge pull request #5 from dloh2236/branch-A-BetterGui","messageBody":"Branch a better gui","fileTypesAndContributionMap":{}},{"hash":"87fbba27fe8dbafa3dbf4ee517ddb07340b34ad9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/dloh2236/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"00119bb6b8c40dabeda991036aa788a6a539c144","isMergeCommit":false,"messageTitle":"Implement mark/unmark all and delete all/clear","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":5}}},{"hash":"1cbed0a5fb06f652c264d2f5522443eac68fd4c7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Self-AllOps\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-21","commitResults":[{"hash":"17cd67be2bede9c2b9c9bfddd624238efa7dfaf3","isMergeCommit":false,"messageTitle":"Minor Change for ui class to formatter class as it no longer handles ui. Refactoring of rest of the classes who use methods in the Formatter class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":124}}},{"hash":"324161c36ab805455b96833e11200daae7040cdf","isMergeCommit":false,"messageTitle":"Refactor TaskList class to let command processing be done by command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":130,"deletions":180}}},{"hash":"c488497bf9826b046e0ea81cf11473de9a4aa4f1","isMergeCommit":false,"messageTitle":"Implement help command, general help and more specific help","messageBody":"","tags":["C-Help"],"fileTypesAndContributionMap":{"txt":{"insertions":234,"deletions":0},"java":{"insertions":81,"deletions":0}}},{"hash":"73a06bf29f87019e279233179730373e4d563a8b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-C-Help\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d51c9c970478771acb358852cfbe772a821522ac","isMergeCommit":false,"messageTitle":"Improve time parser to accept more date and time formats and different combinations. Now date time formatting is more natural and easy to use for users","messageBody":"","tags":["C-NaturalDates","A-MoreErrorHandling"],"fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":54}}},{"hash":"167fa5db3b8cbfd8f2b10be3a6f1a630e893b895","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-C-NaturalDates\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"160d4ac7f7ac1155d6888d5b442252c05d6c70bd","isMergeCommit":false,"messageTitle":"Minor change, refactor to message output and code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":9}}}]},{"date":"2023-09-22","commitResults":[{"hash":"f6d2b8b7f1798deff2d2e147570691f6a3c215e7","isMergeCommit":false,"messageTitle":"UI improvments","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":36,"deletions":30},"java":{"insertions":41,"deletions":1}}},{"hash":"d340081711c70ec8ff55a88d4a0f13bbc8bb26d8","isMergeCommit":false,"messageTitle":"Allow more inputs of datetime such as \"22 sep\" no need for \"22 Sep\" Refactor date time parsing mechanism so error messages are more specific Refactor get next date of time occurence to consider event ending times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":22}}},{"hash":"71b3a03f805a357587ef8405edaebae8e28297f3","isMergeCommit":false,"messageTitle":"Further improvments on command format error message and checking process","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":15}}},{"hash":"ffe928470f8d2633994d83844c514f83e19bfd0b","isMergeCommit":false,"messageTitle":"Edit help txt files for grammar, spelling and made some easier and more useful to users","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":60,"deletions":58}}},{"hash":"5eba717be97bccf943170bb7d406358ea46af3b0","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":516,"deletions":76}}},{"hash":"b91b1826e36ad86b0b2a63f5dcb8730c46507830","isMergeCommit":false,"messageTitle":"Added more unit test","messageBody":"","tags":["A-MoreTesting"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":14}}},{"hash":"1f6b2c1d6ebb079c6ad064a36d0f110529b8aec5","isMergeCommit":false,"messageTitle":"A-UserGuide","messageBody":"Added User Guide","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":98,"deletions":15}}}]},{"date":"2023-09-23","commitResults":[{"hash":"08e3b529fd6c4fbd167dcdb970786834a982e589","isMergeCommit":true,"messageTitle":"Merge pull request #6 from dloh2236/branch-A-UserGuide","messageBody":"A-UserGuide","fileTypesAndContributionMap":{}},{"hash":"d6e631b15c356debe3d0737c20b1f3f4d2993368","isMergeCommit":false,"messageTitle":"Minor changes","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5f020d2d9398b3b9a69851890bd57bdbb012ee5d","isMergeCommit":false,"messageTitle":"Minor bug fix to file reading and UI improvement to fix width and allow flexible height","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":4,"deletions":4},"java":{"insertions":10,"deletions":1}}},{"hash":"d51c1803e5c09480192a4ddccd91e41fbc6e2d13","isMergeCommit":false,"messageTitle":"New User Guide","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":79,"deletions":0}}}]},{"date":"2023-09-24","commitResults":[{"hash":"e84346c65faa6add8777deefd7054870191d6fb1","isMergeCommit":false,"messageTitle":"Add more date formats to parse, some bug fixes with regards to date time format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"5c8e012f6379b910d22b2173d1e337a98ece0c86","isMergeCommit":false,"messageTitle":"Update and rectified README and help.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":30,"deletions":14},"md":{"insertions":525,"deletions":153}}},{"hash":"b70174dd6e29fc35aaa950384b8c115cc8d920bc","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":98,"deletions":118}}},{"hash":"3b3dcd7204db9ed565b7e5d7dc383c82c7bce3ae","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":114,"deletions":112}}},{"hash":"29e761345afa6458e4bc19826f486563b773d252","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":47,"deletions":24}}},{"hash":"d46df9b3a6df2f1fdac4e97db3db725663b2b73c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":14,"deletions":8}}}]},{"date":"2023-09-25","commitResults":[{"hash":"484163ef00295ea0b5b7cd9f6100ba70bf27071a","isMergeCommit":false,"messageTitle":"Minor Bug fixes - Help command handles wrong commands like a champ now - DateTime parsing logic for events is now improved - oreo can math out the dates better - Fixed DateTime parser for all Java 11!","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":1,"deletions":1},"java":{"insertions":126,"deletions":47}}},{"hash":"d3f2ac5e9b802445f545bae10159f41c86745dc9","isMergeCommit":false,"messageTitle":"Update README.md to reflect datetime parser fixed for all java 11","messageBody":"","tags":["A-Releasev1.0.1"],"fileTypesAndContributionMap":{"md":{"insertions":6,"deletions":21}}},{"hash":"2ebedbc2818180f681c76efb45cd44972141174d","isMergeCommit":false,"messageTitle":"Update README.md for latest version 1.0.1","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-26","commitResults":[{"hash":"0e9ed3132ba030050590e2b8575c15dc8a5ccaf9","isMergeCommit":false,"messageTitle":"Update README.md test for GIthub Pages","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":80,"deletions":25}}},{"hash":"34fb60eaa3d228180c72cc47e2d516404af90aec","isMergeCommit":false,"messageTitle":"Update README.md format for github pages","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":69,"deletions":115}}},{"hash":"b4bb9b1abc13fdde3df68017598924635de08bca","isMergeCommit":false,"messageTitle":"Update README.md test for Github Pages","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":34,"deletions":30}}},{"hash":"52ab77d6c3e57dcb2c49b3bb4da9437b27623bf7","isMergeCommit":false,"messageTitle":"Update README.md again for github pages formatting issues","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":28,"deletions":20}}},{"hash":"367e0e75bc95cd69fc6fb9dcfee68cdcad55c7ee","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":8}}},{"hash":"099495217eb19ee7efb1fb242fbb5cddd039114c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":18,"deletions":18}}},{"hash":"38bcd995df5c7eab930ccd0b86af1f0f702f1acf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/dloh2236/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e4ab2b5a23d471499cfe5e43557c96c6a08417dc","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":2}}},{"hash":"3a3692e0951b3099aafb09af6c4332817fc6af05","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"5bbfdbd2b537df2eb39974dc72104b07fec12235","isMergeCommit":false,"messageTitle":"Update README format for Github Pages","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"dloh2236":{"java":2657,"md":547,"fxml":86,"sh":0,"bat":0,"gradle":21,"txt":282}},"authorContributionVariance":{"dloh2236":116569.336},"authorDisplayNameMap":{"dloh2236":"CS2103T-W09-2 LOH ..NIEL"}} diff --git a/kayabuttertoastt_ip_master/authorship.json b/kayabuttertoastt_ip_master/authorship.json index b69c046e..6040f624 100644 --- a/kayabuttertoastt_ip_master/authorship.json +++ b/kayabuttertoastt_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":"kayabuttertoastt"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"checkstyle {","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" toolVersion \u003d \u002710.12.2\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" mainClass.set(\"gudetama.Launcher\")","lastModifiedDate":"2023-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"kayabuttertoastt":22,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"# Gudetama User Guide","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"Gudetama is an application that helps you to manage tasks. It is optimised for use via a Command Line Interface (CLI).","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"It comes with a user-friendly and intuitive GUI. ","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"Note: ","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"1. All commands are case-sensitive. ","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"2. All dates should be in the dd-MM-yyyy HH:mm:ss format","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"### Add todo ","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"Create a todo ","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":"### Add deadline","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":"Create a deadline","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":"### Add event","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"Create an event ","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":"### Delete task","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":"Delete a task that you have previously added ","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":"### Mark task","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":"Mark completed tasks as done","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":"### Unmark task","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":"Unmark tasks that you have accidentally marked as done","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":"### Find task ","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":"Find a task in your list ","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":"### Help","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":"Ask Gudetama for the valid commands that you can use ","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"### `todo` - Creates a new todo ","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":"Creates a new todo and adds it to your list of tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Example of usage: ","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":"`todo run`","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":"Got it. I\u0027ve added this task: ","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":"[T] [] run","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":"Now you have 1 tasks in the list. ","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":"### `deadline` - Creates a new deadline","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":"Creates a new deadline and adds it to your list of tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":"`deadline assignment /by 12-12-2012 12:12:12`","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":"Got it. I\u0027ve added this task: ","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":"[D] [] assignment (by: 12/12/2012 12:12:12)","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":"Now you have 1 tasks in the list. ","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":"### `event` - Creates a new event","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":"Creates a new event and adds it to your list of tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":"`event sports day /from 12-12-2012 12:12:12 ","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":"/to 12-12-2012 18:12:12`","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":"Got it. I\u0027ve added this task: ","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":"[E] [] sports day (from: 12/12/2012 12:12:12","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"kayabuttertoastt"},"content":"to: 12/12/2012 18:12:12)","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"kayabuttertoastt"},"content":"Now you have 1 tasks in the list. ","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"kayabuttertoastt"},"content":"### `delete` - Deletes a task","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"kayabuttertoastt"},"content":"Deletes a task and removes it from the list of tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"kayabuttertoastt"},"content":"`delete 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"kayabuttertoastt"},"content":"Noted. I\u0027ve removed this task: ","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"kayabuttertoastt"},"content":"[T][] run ","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"kayabuttertoastt"},"content":"Now you have 0 tasks in the list","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"kayabuttertoastt"},"content":"### `mark` - Marks a completed task as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"kayabuttertoastt"},"content":"Marks a completed task as done, ","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"kayabuttertoastt"},"content":"which is indicated by a cross symbol in the list. ","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"kayabuttertoastt"},"content":"`mark 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"kayabuttertoastt"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"kayabuttertoastt"},"content":"[T][X] run ","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":129,"author":{"gitId":"kayabuttertoastt"},"content":"### `unmark` - Unmarks a completed task","lastModifiedDate":"2023-09-22"},{"lineNumber":130,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":131,"author":{"gitId":"kayabuttertoastt"},"content":"Unmarks a completed task as done ","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"kayabuttertoastt"},"content":"which is indicated by the removal of the cross symbol","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"kayabuttertoastt"},"content":"`unmark 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":138,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"kayabuttertoastt"},"content":"OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"kayabuttertoastt"},"content":"[T][] run ","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"kayabuttertoastt"},"content":"### `list` - Lists the tasks ","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":146,"author":{"gitId":"kayabuttertoastt"},"content":"Lists all the task in the tasklist ","lastModifiedDate":"2023-09-22"},{"lineNumber":147,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":148,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":149,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":150,"author":{"gitId":"kayabuttertoastt"},"content":"`list`","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":154,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":155,"author":{"gitId":"kayabuttertoastt"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-22"},{"lineNumber":156,"author":{"gitId":"kayabuttertoastt"},"content":"1. [T][] run ","lastModifiedDate":"2023-09-22"},{"lineNumber":157,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":158,"author":{"gitId":"kayabuttertoastt"},"content":"### `help` - Lists the valid commands ","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"kayabuttertoastt"},"content":"Lists the valid commands that the user can use with examples ","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"kayabuttertoastt"},"content":"`help`","lastModifiedDate":"2023-09-22"},{"lineNumber":165,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":166,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":167,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":168,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":169,"author":{"gitId":"kayabuttertoastt"},"content":"Here is a list of valid commands:","lastModifiedDate":"2023-09-22"},{"lineNumber":170,"author":{"gitId":"kayabuttertoastt"},"content":"1. todo ","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"kayabuttertoastt"},"content":"2. event","lastModifiedDate":"2023-09-22"},{"lineNumber":172,"author":{"gitId":"kayabuttertoastt"},"content":"3. deadline","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"kayabuttertoastt"},"content":"4. mark ","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"kayabuttertoastt"},"content":"5. unmark ","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"kayabuttertoastt"},"content":"6. list ","lastModifiedDate":"2023-09-22"},{"lineNumber":176,"author":{"gitId":"kayabuttertoastt"},"content":"7. delete ","lastModifiedDate":"2023-09-22"},{"lineNumber":177,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"kayabuttertoastt"},"content":"### `find` - Finds task with the specified keyword","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"kayabuttertoastt"},"content":"Finds and returns the tasks in the list that matches the specified keyword","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"kayabuttertoastt"},"content":"`find run`","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":188,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":189,"author":{"gitId":"kayabuttertoastt"},"content":"Here are the matching tasks in your list:","lastModifiedDate":"2023-09-22"},{"lineNumber":190,"author":{"gitId":"kayabuttertoastt"},"content":"1. [T][] run ","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"kayabuttertoastt":164,"-":27}},{"path":"src/main/java/gudetama/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.Command;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.exceptions.DukeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.parser.Parser;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.DialogBox;","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.geometry.Insets;","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":"public class Duke extends Application {","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" private Storage storage;","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" private TaskList tasklist;","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" private Ui ui;","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" private Scene scene;","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/images/gudetama1.jpg\"));","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" private Image gudetama \u003d new Image(this.getClass().getResourceAsStream(\"/images/gudetama2.jpg\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" this.tasklist \u003d storage.readFromFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" public Duke(){","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" this.storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" this.tasklist \u003d storage.readFromFile();","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" public void start(Stage stage) throws FileNotFoundException {","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" Duke duke \u003d new Duke(\"./data/duke.txt\");","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" this.ui \u003d duke.ui;","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" this.storage \u003d duke.storage;","lastModifiedDate":"2023-09-13"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" this.tasklist \u003d duke.tasklist;","lastModifiedDate":"2023-09-13"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane \u003d new ScrollPane();","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2023-09-13"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2023-09-13"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":" scene \u003d new Scene(mainLayout);","lastModifiedDate":"2023-09-13"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setTitle(\"Gudetama\");","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setResizable(false);","lastModifiedDate":"2023-09-13"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setMinHeight(600.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setMinWidth(400.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setOnCloseRequest(","lastModifiedDate":"2023-09-13"},{"lineNumber":80,"author":{"gitId":"kayabuttertoastt"},"content":" (event) -\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":" close();","lastModifiedDate":"2023-09-13"},{"lineNumber":82,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":83,"author":{"gitId":"kayabuttertoastt"},"content":" );","lastModifiedDate":"2023-09-13"},{"lineNumber":84,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":" mainLayout.setPrefSize(400.0, 600.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":87,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setPrefSize(385, 535);","lastModifiedDate":"2023-09-13"},{"lineNumber":88,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2023-09-13"},{"lineNumber":89,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2023-09-13"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2023-09-13"},{"lineNumber":93,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":94,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2023-09-13"},{"lineNumber":95,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":96,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.setPrefWidth(325.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":97,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"kayabuttertoastt"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":99,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":100,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":101,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":102,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":103,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane.setRightAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":104,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":105,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane.setLeftAnchor(userInput , 1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":106,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":107,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":108,"author":{"gitId":"kayabuttertoastt"},"content":" Label welcomeMessage \u003d new Label(ui.showWelcome());","lastModifiedDate":"2023-09-21"},{"lineNumber":109,"author":{"gitId":"kayabuttertoastt"},"content":" welcomeMessage.setPadding(new Insets(10));","lastModifiedDate":"2023-09-21"},{"lineNumber":110,"author":{"gitId":"kayabuttertoastt"},"content":" DialogBox gudetamaDialog \u003d DialogBox.getGudetamaDialog(welcomeMessage, new ImageView(gudetama));","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.getChildren().addAll(gudetamaDialog);","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"kayabuttertoastt"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":114,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.getChildren().add(getDialogLabel(userInput.getText()));","lastModifiedDate":"2023-09-13"},{"lineNumber":115,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.clear();","lastModifiedDate":"2023-09-13"},{"lineNumber":116,"author":{"gitId":"kayabuttertoastt"},"content":" });","lastModifiedDate":"2023-09-13"},{"lineNumber":117,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":118,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":119,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.getChildren().add(getDialogLabel(userInput.getText()));","lastModifiedDate":"2023-09-13"},{"lineNumber":120,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.clear();","lastModifiedDate":"2023-09-13"},{"lineNumber":121,"author":{"gitId":"kayabuttertoastt"},"content":" });","lastModifiedDate":"2023-09-13"},{"lineNumber":122,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":123,"author":{"gitId":"kayabuttertoastt"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":124,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":125,"author":{"gitId":"kayabuttertoastt"},"content":" handleUserInput();","lastModifiedDate":"2023-09-13"},{"lineNumber":126,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":127,"author":{"gitId":"kayabuttertoastt"},"content":" ui.showErrorMessage(e.getMessage());","lastModifiedDate":"2023-09-13"},{"lineNumber":128,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":129,"author":{"gitId":"kayabuttertoastt"},"content":" });","lastModifiedDate":"2023-09-13"},{"lineNumber":130,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":131,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":132,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"kayabuttertoastt"},"content":" handleUserInput();","lastModifiedDate":"2023-09-13"},{"lineNumber":134,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"kayabuttertoastt"},"content":" ui.showErrorMessage(e.getMessage());","lastModifiedDate":"2023-09-13"},{"lineNumber":136,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"kayabuttertoastt"},"content":" });","lastModifiedDate":"2023-09-13"},{"lineNumber":138,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":139,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-13"},{"lineNumber":140,"author":{"gitId":"kayabuttertoastt"},"content":" stage.show();","lastModifiedDate":"2023-09-13"},{"lineNumber":141,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":142,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2023-09-13"},{"lineNumber":143,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":144,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":145,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":146,"author":{"gitId":"kayabuttertoastt"},"content":" private Label getDialogLabel(String text) {","lastModifiedDate":"2023-09-13"},{"lineNumber":147,"author":{"gitId":"kayabuttertoastt"},"content":" Label textToAdd \u003d new Label(text);","lastModifiedDate":"2023-09-13"},{"lineNumber":148,"author":{"gitId":"kayabuttertoastt"},"content":" textToAdd.setWrapText(true);","lastModifiedDate":"2023-09-13"},{"lineNumber":149,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":150,"author":{"gitId":"kayabuttertoastt"},"content":" return textToAdd;","lastModifiedDate":"2023-09-13"},{"lineNumber":151,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":153,"author":{"gitId":"kayabuttertoastt"},"content":" private void handleUserInput() throws DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":154,"author":{"gitId":"kayabuttertoastt"},"content":" String userMessage \u003d userInput.getText();","lastModifiedDate":"2023-09-21"},{"lineNumber":155,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":156,"author":{"gitId":"kayabuttertoastt"},"content":" Label userText \u003d new Label(userMessage);","lastModifiedDate":"2023-09-21"},{"lineNumber":157,"author":{"gitId":"kayabuttertoastt"},"content":" Label gudetamaText \u003d new Label(getResponse(userMessage));","lastModifiedDate":"2023-09-22"},{"lineNumber":158,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":159,"author":{"gitId":"kayabuttertoastt"},"content":" DialogBox userDialog \u003d DialogBox.getUserDialog(userText, new ImageView(user));","lastModifiedDate":"2023-09-21"},{"lineNumber":160,"author":{"gitId":"kayabuttertoastt"},"content":" DialogBox gudetamaDialog \u003d DialogBox.getGudetamaDialog(gudetamaText, new ImageView(gudetama));","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":162,"author":{"gitId":"kayabuttertoastt"},"content":" gudetamaText.setPadding(new Insets(10));","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"kayabuttertoastt"},"content":" userText.setPadding(new Insets(10));","lastModifiedDate":"2023-09-21"},{"lineNumber":164,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.setSpacing(10);","lastModifiedDate":"2023-09-21"},{"lineNumber":165,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":166,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.getChildren().addAll(userDialog, gudetamaDialog);","lastModifiedDate":"2023-09-22"},{"lineNumber":167,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":168,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.clear();","lastModifiedDate":"2023-09-13"},{"lineNumber":169,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"kayabuttertoastt"},"content":" private void close(){","lastModifiedDate":"2023-09-13"},{"lineNumber":172,"author":{"gitId":"kayabuttertoastt"},"content":" storage.saveToFile(tasklist.retrieveList());","lastModifiedDate":"2023-09-13"},{"lineNumber":173,"author":{"gitId":"kayabuttertoastt"},"content":" System.exit(0);","lastModifiedDate":"2023-09-13"},{"lineNumber":174,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":175,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":176,"author":{"gitId":"kayabuttertoastt"},"content":" public String getResponse(String input) throws DukeException {","lastModifiedDate":"2023-09-21"},{"lineNumber":177,"author":{"gitId":"kayabuttertoastt"},"content":" Command command \u003d Parser.parse(input);","lastModifiedDate":"2023-09-13"},{"lineNumber":178,"author":{"gitId":"kayabuttertoastt"},"content":" String output \u003d command.execute(tasklist, ui, storage);","lastModifiedDate":"2023-09-13"},{"lineNumber":179,"author":{"gitId":"kayabuttertoastt"},"content":" if (command.isExit()){","lastModifiedDate":"2023-09-13"},{"lineNumber":180,"author":{"gitId":"kayabuttertoastt"},"content":" close();","lastModifiedDate":"2023-09-13"},{"lineNumber":181,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":182,"author":{"gitId":"kayabuttertoastt"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"kayabuttertoastt":182,"-":2}},{"path":"src/main/java/gudetama/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":" * This class serves as the launcher for the Duke application.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"public class Launcher {","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" Application.launch(Duke.class, args);","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"kayabuttertoastt":13}},{"path":"src/main/java/gudetama/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command that can be executed by the chatbot","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Abstract method that returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * Abstract method that executes the command that adds the task","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the task has been added","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" public abstract String execute(TaskList tasksList, Ui ui, Storage storage);","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":24}},{"path":"src/main/java/gudetama/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Deadline;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to add a deadline to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" * Description of the deadline to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" private String description;","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * Due date for the task","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" private String date;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for DeadlineCommand","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of the deadline to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * @param date Due date for the task","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" public DeadlineCommand(String description, String date) {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" this.date \u003d date;","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command that adds the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the deadline has been added","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" Task deadline \u003d new Deadline(description, date);","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" tasksList.addTask(deadline);","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showAddedTask(tasksList);","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":55}},{"path":"src/main/java/gudetama/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to delete a task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Index of the task to be deleted in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" private final int num;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for DeleteCommand","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the task to be deleted in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" public DeleteCommand(int num) {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" assert num \u003e 0 : \"Task index should be greater than 0.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" this.num \u003d num;","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes a command to delete a task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the task has been deleted","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" String result \u003d ui.showRemovedTask(tasksList, num);","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" tasksList.removeTask(num);","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" return result;","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":46}},{"path":"src/main/java/gudetama/commands/ErrorCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command for handling error messages","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class ErrorCommand extends Command{","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" private String message;","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" public ErrorCommand(String message){","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" this.message \u003d message;","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to show error message when input is invalid","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to the user","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showErrorMessage(message);","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"kayabuttertoastt":37}},{"path":"src/main/java/gudetama/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Event;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to add an event task to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" * Description of the event task to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" private String description;","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * Start date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" private String from;","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * End date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" private String to;","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for EventCommand","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of the event task to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" * @param from Start date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" * @param to End date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" public EventCommand(String description, String from, String to) {","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command that adds the event task","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the event task has been added","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" Task event \u003d new Event(description, from, to);","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" tasksList.addTask(event);","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showAddedTask(tasksList);","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":61}},{"path":"src/main/java/gudetama/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents the command to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" return true;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to the user","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" storage.saveToFile(tasksList.retrieveList());","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showGoodbye();","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":31}},{"path":"src/main/java/gudetama/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents the command for finding a task from the task list","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" private String input;","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for FindCommand","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * @param input Keyword","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" public FindCommand(String input) {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" assert input !\u003d null : \"Keyword should not be empty. Enter a keyword to search.\";","lastModifiedDate":"2023-09-20"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to the user","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showFindResults(tasksList, input);","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":44}},{"path":"src/main/java/gudetama/commands/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command for displaying a list of valid commands to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class HelpCommand extends Command{","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-20"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-20"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-20"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-20"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to show a list of commands that the user can use","lastModifiedDate":"2023-09-20"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-20"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to the user","lastModifiedDate":"2023-09-20"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-20"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-20"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-20"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showHelp();","lastModifiedDate":"2023-09-20"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-20"}],"authorContributionMap":{"kayabuttertoastt":30}},{"path":"src/main/java/gudetama/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command for handling invalid user inputs","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class InvalidCommand extends Command{","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to show error message when input is invalid","lastModifiedDate":"2023-09-20"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to the user","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showInvalid();","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"kayabuttertoastt":31}},{"path":"src/main/java/gudetama/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to list the tasks in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to list the tasks in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays the user the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that saves the task to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showList(tasksList);","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":30}},{"path":"src/main/java/gudetama/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to mark a previous marked task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * Index of task to be unmarked","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" private final int num;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for MarkCommand class","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the task to be unmarked.","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" public MarkCommand(int num) {","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" assert num \u003e 0 : \"Task index should be greater than 0.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" this.num \u003d num;","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command that marks the task at the specified index","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list to be marked","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the task has been marked","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" return tasksList.markTask(num);","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":45}},{"path":"src/main/java/gudetama/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Todo;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to add a todo task to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" * Description of the todo task to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" String description;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for TodoCommand","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of the todo task to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command that adds the todo task","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the todo task has been added","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" Task todo \u003d new Todo(description);","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" tasksList.addTask(todo);","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showAddedTask(tasksList);","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":48}},{"path":"src/main/java/gudetama/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to unmark a previous marked task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Index of task to be unmarked","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" private final int num;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for UnmarkCommand class","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the task to be unmarked.","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" public UnmarkCommand(int num) {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" assert num \u003e 0 : \"Task index should be greater than 0.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" this.num \u003d num;","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command that unmarks the task at the specified index","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list to be unmarked","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the task has been unmarked","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" return tasksList.unMarkTask(num);","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":44}},{"path":"src/main/java/gudetama/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.exceptions;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents an exception that occurs in the program","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for DukeException","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" * @param message Exception message that is thrown to the user","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a string representation of the message","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A string containing the message","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" return super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":24}},{"path":"src/main/java/gudetama/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.parser;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.*;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.exceptions.DukeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents the class that is responsible for parsing user inputs and generating the relevant commands","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Checks if the user input is valid","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * @param command User input to be validated","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Returns a boolean that indicates if the input is valid","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" * @throws DukeException If the user input is not valid","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" public static boolean isValid (String command) throws DukeException {","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" String firstString \u003d command.split(\" \")[0];","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" if (command.equals(\"list\") || command.equals(\"bye\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" return true;","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"todo\") \u0026\u0026 command.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Please include a description of the todo.\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" \"Eg. todo run\");","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"deadline\") \u0026\u0026 command.split(\" \").length \u003c 2","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" \u0026\u0026 !command.contains(\"/by\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Input should have a description and date.\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" \"Eg. deadline assignment /by dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-20"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"event\") \u0026\u0026 command.split(\" \").length \u003c 2){","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Input should have a description.\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" \"Eg. event sports day /from dd-MM-yyyy HH:mm:ss /to dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"event\") \u0026\u0026 !command.contains(\"/from\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Input should have a start date.\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" \"Eg. event sports day /from dd-MM-yyyy HH:mm:ss /to dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-20"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"event\") \u0026\u0026 !command.contains(\"/to\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Input should have an end date.\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" \"Eg. event sports day /from dd-MM-yyyy HH:mm:ss /to dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-20"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"mark\") \u0026\u0026 command.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-09-21"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Please include the index of the task to be marked. \" +","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" \"Index starts from 0.\");","lastModifiedDate":"2023-09-21"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"unmark\") \u0026\u0026 command.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Please include the index of the task to be unmarked. Index starts from 0.\");","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" return true;","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" * Parses the user input and returns the corresponding command","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" * @param command The user input to be parsed.","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Command that corresponds to the parsed user input","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" * @throws DukeException If the user input is not valid","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" public static Command parse(String command) throws DukeException {","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" isValid(command);","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (DukeException e){","lastModifiedDate":"2023-09-21"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" return new ErrorCommand(e.getMessage());","lastModifiedDate":"2023-09-21"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"todo\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" return new TodoCommand(command.split(\"todo\")[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"event\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" String description \u003d command.split(\"event\")[1].split(\"/from\")[0].stripLeading();","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" String from \u003d command.split(\"\\\\s*/from\\\\s*\")[1].split(\"\\\\s*/to\\\\s*\")[0].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":" String to \u003d command.split(\"\\\\s*/to\\\\s*\")[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" return new EventCommand(description, from, to);","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":" String description \u003d command.split(\"deadline\")[1].split(\"/by\")[0].trim();","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":" String date \u003d command.split(\"by\")[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":" return new DeadlineCommand(description, date);","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"delete\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":" int index \u003d Integer.parseInt(command.split(\" \")[1]);","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"mark\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":" return new MarkCommand(Integer.parseInt(command.split(\" \")[1].trim()));","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"unmark\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"kayabuttertoastt"},"content":" return new UnmarkCommand(Integer.parseInt(command.split(\" \")[1].trim()));","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"find\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":" return new FindCommand(command.split(\" \")[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"help\")){","lastModifiedDate":"2023-09-20"},{"lineNumber":87,"author":{"gitId":"kayabuttertoastt"},"content":" return new HelpCommand();","lastModifiedDate":"2023-09-20"},{"lineNumber":88,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"kayabuttertoastt"},"content":" return new InvalidCommand();","lastModifiedDate":"2023-09-13"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":92}},{"path":"src/main/java/gudetama/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.File;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Todo;","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Event;","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Deadline;","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a storage which stores and retrieves the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * The file used for storage","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" private File file;","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for Storage","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * @param path File path of the file used for storage","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" public Storage(String path) {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" this.file \u003d new File(path);","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" file.mkdirs();","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * Saves a list of tasks to the storage file","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" * @param inputs List of tasks to be stored","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" public static void saveToFile(ArrayList\u003cTask\u003e inputs) {","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" File f \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" for (Task t : inputs) {","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" fw.write(t.store() + \"\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" System.out.println(inputs);","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" fw.close();","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" System.err.println(\"An error occurred while saving to the file: \" + e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" * Reads tasks from the storage file","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Task list that contains the tasks read from the storage file","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" public static TaskList readFromFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" try (Scanner scanner \u003d new Scanner(new File(\"./data/duke.txt\"))) {","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" String[] type \u003d scanner.nextLine().substring(4).split(\" \");","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" String[] description \u003d scanner.nextLine().substring(4).split(\"\\\\|\");","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" if (type[0].equals(\"todo\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" Todo todo \u003d new Todo(description[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":" taskList.add(todo);","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (type[0].equals(\"deadline\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":" Deadline deadline \u003d new Deadline(description[1], description[2]);","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (type[0].equals(\"event\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":" String date[] \u003d scanner.nextLine().substring(4).split(\"-\");","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":" Event event \u003d new Event(description[1], description[2], date[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":" taskList.add(event);","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":" System.out.println(\"Invalid Input\");","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"kayabuttertoastt"},"content":" System.out.println(\"Error: File Not Found!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":" return new TaskList(taskList);","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":87}},{"path":"src/main/java/gudetama/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.tasks;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Due date of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" protected String date;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * Formatted due date of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" protected LocalDateTime formattedDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for Deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of the deadline to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param date Due date for the task","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" public Deadline(String description, String date) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" \"dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" formattedDate \u003d LocalDateTime.parse(this.date, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" public String store() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" return String.format(\"D | %s | %s | %s\", this.isDone, this.description,","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" formattedDate.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")));","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" return String.format(\"[D] %s (by: %s)\", super.toString(),","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" formattedDate.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")));","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":58}},{"path":"src/main/java/gudetama/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.tasks;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents an event","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * End date of event task","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" private String end;","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" * Start date of event task","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" private String start;","lastModifiedDate":"2023-09-20"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * Formatted start date of event task","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" private LocalDateTime formattedStart;","lastModifiedDate":"2023-09-20"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * Formatted end date of event task","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" private LocalDateTime formattedEnd;","lastModifiedDate":"2023-09-20"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for Event","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of the event task","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" * @param start Start date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" * @param end End date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" super(description.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" this.end \u003d end;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" \"dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" formattedStart \u003d LocalDateTime.parse(this.start, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" formattedEnd \u003d LocalDateTime.parse(this.end, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" public String store() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" return String.format(\"E | %s | %s | %s - %s\", this.isDone, this.description,","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" formattedStart.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")),","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" formattedEnd.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")));","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" return String.format(\"[E] %s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" formattedStart.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")),","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":" formattedEnd.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")));","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":72}},{"path":"src/main/java/gudetama/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.tasks;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents an task","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Description of task","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * Indicates whether the task is done or not","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor of Task","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of task","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a status icon to represent the task\u0027s completion status","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Status icon to represent the task\u0027s completion status","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" * Marks the task as undone","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" * Marks the task as done","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" public String store() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" return \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description ;","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":65}},{"path":"src/main/java/gudetama/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.tasks;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a task list","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" * List of tasks stored in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" private ArrayList\u003cTask\u003e inputs \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor of TaskList","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" * @param inputs The initial list of tasks in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" public TaskList(ArrayList\u003cTask\u003e inputs) {","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" this.inputs \u003d inputs;","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * Adds the task to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param task Task to be added to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" this.inputs.add(task);","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" * Removes the task at a particular index as done","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the particular task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" public String removeTask(int num) {","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" int index \u003d num - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" if (num \u003c 0) {","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value cannot be negative. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003d\u003d 0){","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value should be an integer greater than 0. Please try again.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003e inputs.size()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The input value is wrong. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" String deleted \u003d inputs.get(index).toString();","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" inputs.remove(index);","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The task has been deleted.\\n\"","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" + deleted;","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" * Marks the task at a particular index as done","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the particular task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" public String markTask(int num) {","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" int index \u003d num - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" if (num \u003c 0) {","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value cannot be negative. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003d\u003d 0){","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value should be an integer greater than 0. Please try again.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003e inputs.size()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The input value is wrong. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" inputs.get(index).markAsDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" String output \u003d \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" + \" \" + inputs.get(index);","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":" * Unmarks the task at a particular index as done","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the particular task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":" public String unMarkTask(int num) {","lastModifiedDate":"2023-09-13"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":" int index \u003d num - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":" if (num \u003c 0) {","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value cannot be negative. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":80,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003d\u003d 0){","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value should be an integer greater than 0. Please try again.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003e inputs.size()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The input value is wrong. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":84,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":" inputs.get(index).markAsUndone();","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":" String output \u003d \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"kayabuttertoastt"},"content":" + \" \" + inputs.get(index);","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":89,"author":{"gitId":"kayabuttertoastt"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the number of tasks in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Number of tasks in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"kayabuttertoastt"},"content":" public int len() {","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"kayabuttertoastt"},"content":" return inputs.size();","lastModifiedDate":"2023-09-07"},{"lineNumber":99,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"kayabuttertoastt"},"content":" * Retrieves the list of tasks stored in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"kayabuttertoastt"},"content":" * @return ArrayList that contains the tasks stored in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"kayabuttertoastt"},"content":" public ArrayList\u003cTask\u003e retrieveList() {","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"kayabuttertoastt"},"content":" return inputs;","lastModifiedDate":"2023-09-07"},{"lineNumber":107,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"kayabuttertoastt"},"content":" * Filters the list and returns the tasks that contains the text","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"kayabuttertoastt"},"content":" * specified by the user in their description.","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"kayabuttertoastt"},"content":" * @param input The input text to filter the list","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"kayabuttertoastt"},"content":" * @return ArrayList of Task objects that contain the input in their description","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"kayabuttertoastt"},"content":" public ArrayList\u003cTask\u003e getFilteredTasks(String input){","lastModifiedDate":"2023-09-02"},{"lineNumber":116,"author":{"gitId":"kayabuttertoastt"},"content":" ArrayList\u003cTask\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":117,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"kayabuttertoastt"},"content":" for (int i \u003d 0; i \u003c inputs.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"kayabuttertoastt"},"content":" if (inputs.get(i).description.contains(input)) {","lastModifiedDate":"2023-09-02"},{"lineNumber":120,"author":{"gitId":"kayabuttertoastt"},"content":" output.add(inputs.get(i));","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":122,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":123,"author":{"gitId":"kayabuttertoastt"},"content":" return output;","lastModifiedDate":"2023-09-02"},{"lineNumber":124,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":125}},{"path":"src/main/java/gudetama/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.tasks;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents an todo","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for todo","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of todo","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the todo","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the todo","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" public String store() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" return String.format(\"T | %s | %s\", this.isDone, this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the todo","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the todo","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":32}},{"path":"src/main/java/gudetama/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a dialog box","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" private Label text;","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for DialogBox","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * @param l Label for the dialog box","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * @param iv Image view for the dialog box","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" public DialogBox(Label l, ImageView iv) {","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" text \u003d l;","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" displayPicture \u003d iv;","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" text.setWrapText(true);","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" displayPicture.setFitWidth(100.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" displayPicture.setFitHeight(100.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" this.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" this.getChildren().addAll(text, displayPicture);","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * Flips the alignment of the dialog box to display messages from the left","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" private void flip() {","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" this.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" FXCollections.reverse(tmp);","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" this.getChildren().setAll(tmp);","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" * Creates a user dialog box with Label and ImageView that is provided","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" * @param l Label for the user\u0027s message","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" * @param iv ImageView for the user\u0027s display picture","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A DialogBox representing the user\u0027s message","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" public static DialogBox getUserDialog(Label l, ImageView iv) {","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" return new DialogBox(l, iv);","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" * Creates a Gudetama dialog box with Label and ImageView that is provided","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" * @param l Label for Gudetama\u0027s message","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" * @param iv ImageView for Gudetama\u0027s display picture","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A DialogBox representing Gudetama\u0027s message","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" public static DialogBox getGudetamaDialog(Label l, ImageView iv) {","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" var db \u003d new DialogBox(l, iv);","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" db.flip();","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" return db;","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"kayabuttertoastt":68}},{"path":"src/main/java/gudetama/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a user interface that interacts with the user","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"public class Ui {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" * Scanner that is used to read the input from the user","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" private final Scanner scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * String contains the help message that contains a list of valid commands","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * that the user can use.","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" private final String help \u003d \"Here is a list of valid commands: \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" \"1. todo \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" \"2. event \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" \"3. deadline \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" \"4. mark \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" \"5. unmark \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" \"6. list \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" \"7. delete \\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for Ui","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" public Ui() {","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" * Displays the welcome message to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" * @return String containing the welcome message to be displayed to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" public String showWelcome() {","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" return \"Hello! I\u0027m Gudetama.\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" + \"What can I do for you?\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" * Displays the invalid message to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" * @return String containing the invalid message to be displayed to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" public String showInvalid(){","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" return \"Invalid Command. Please Try Again! \\n\" + help;","lastModifiedDate":"2023-09-20"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" * Displays a help message which contains a list of valid commands","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" * that the user can use in their input.","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" * @return String containing the help message to be displayed","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" public String showHelp(){","lastModifiedDate":"2023-09-20"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" return help;","lastModifiedDate":"2023-09-20"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" * Displays the error message to the user.","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" * @param message Error message to be displayed to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" * @return String containing the provided error message","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":" public String showErrorMessage(String message){","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" return message;","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":" * Prints goodbye message","lastModifiedDate":"2023-09-07"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":" public String showGoodbye() {","lastModifiedDate":"2023-09-13"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":" return \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-09-13"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":" * Prints out the tasks in the task list.","lastModifiedDate":"2023-09-07"},{"lineNumber":82,"author":{"gitId":"kayabuttertoastt"},"content":" * @param","lastModifiedDate":"2023-09-07"},{"lineNumber":83,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":84,"author":{"gitId":"kayabuttertoastt"},"content":" public String showList(TaskList taskList) {","lastModifiedDate":"2023-09-13"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":" String result \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":" for (int i \u003d 0; i \u003c taskList.len(); i++) {","lastModifiedDate":"2023-09-07"},{"lineNumber":87,"author":{"gitId":"kayabuttertoastt"},"content":" result +\u003d (i + 1) + \". \" + taskList.retrieveList().get(i) + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":88,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":" return result;","lastModifiedDate":"2023-09-13"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":94,"author":{"gitId":"kayabuttertoastt"},"content":" * Prints out the newly added task in the task list","lastModifiedDate":"2023-09-07"},{"lineNumber":95,"author":{"gitId":"kayabuttertoastt"},"content":" * @param taskList TaskList containing the list of tasks","lastModifiedDate":"2023-09-07"},{"lineNumber":96,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":97,"author":{"gitId":"kayabuttertoastt"},"content":" public String showAddedTask(TaskList taskList) {","lastModifiedDate":"2023-09-13"},{"lineNumber":98,"author":{"gitId":"kayabuttertoastt"},"content":" String task \u003d \"Got it. I\u0027ve added this task: \\n\"","lastModifiedDate":"2023-09-13"},{"lineNumber":99,"author":{"gitId":"kayabuttertoastt"},"content":" + taskList.retrieveList().get(taskList.len() - 1).toString()","lastModifiedDate":"2023-09-13"},{"lineNumber":100,"author":{"gitId":"kayabuttertoastt"},"content":" + \"\\n Now you have \" + taskList.len() + \" tasks in the list\";","lastModifiedDate":"2023-09-13"},{"lineNumber":101,"author":{"gitId":"kayabuttertoastt"},"content":" return task;","lastModifiedDate":"2023-09-13"},{"lineNumber":102,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":105,"author":{"gitId":"kayabuttertoastt"},"content":" * Prints out the task that has been removed by the user","lastModifiedDate":"2023-09-07"},{"lineNumber":106,"author":{"gitId":"kayabuttertoastt"},"content":" * @param taskList TaskList containing the list of tasks","lastModifiedDate":"2023-09-07"},{"lineNumber":107,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the task to be removed","lastModifiedDate":"2023-09-07"},{"lineNumber":108,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":109,"author":{"gitId":"kayabuttertoastt"},"content":" public String showRemovedTask(TaskList taskList, int num) {","lastModifiedDate":"2023-09-13"},{"lineNumber":110,"author":{"gitId":"kayabuttertoastt"},"content":" int total \u003d taskList.len() - 1;","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"kayabuttertoastt"},"content":" String output \u003d \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"kayabuttertoastt"},"content":" + taskList.retrieveList().get(num - 1).toString()","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"kayabuttertoastt"},"content":" + \"\\n Now you have \" + total + \" tasks in the list\";","lastModifiedDate":"2023-09-13"},{"lineNumber":114,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":115,"author":{"gitId":"kayabuttertoastt"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":116,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":117,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":119,"author":{"gitId":"kayabuttertoastt"},"content":" * Displays the tasks with the keyword that the user inputs","lastModifiedDate":"2023-09-07"},{"lineNumber":120,"author":{"gitId":"kayabuttertoastt"},"content":" * @param taskList TaskList containing the list of tasks","lastModifiedDate":"2023-09-07"},{"lineNumber":121,"author":{"gitId":"kayabuttertoastt"},"content":" * @param input Keyword that the user inputs","lastModifiedDate":"2023-09-07"},{"lineNumber":122,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":123,"author":{"gitId":"kayabuttertoastt"},"content":" public String showFindResults(TaskList taskList , String input) {","lastModifiedDate":"2023-09-13"},{"lineNumber":124,"author":{"gitId":"kayabuttertoastt"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getFilteredTasks(input);","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"kayabuttertoastt"},"content":" String result \u003d \"Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":127,"author":{"gitId":"kayabuttertoastt"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-02"},{"lineNumber":128,"author":{"gitId":"kayabuttertoastt"},"content":" return \"There are no tasks with that keyword.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":129,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"kayabuttertoastt"},"content":" for (int i \u003d 1; i \u003c\u003d list.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":131,"author":{"gitId":"kayabuttertoastt"},"content":" result +\u003d i + \". \" + list.get(i - 1).toString() + \"\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":133,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":134,"author":{"gitId":"kayabuttertoastt"},"content":" return result;","lastModifiedDate":"2023-09-13"},{"lineNumber":135,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":138,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":138}},{"path":"src/test/java/gudetama/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Deadline;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"class DeadlineTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" void testToString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" Deadline deadline \u003d new Deadline(\"deadline run\" , \"12-12-2012 19:00:00\");","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" String expected \u003d \"[D] [ ] deadline run (by: 12/12/2012 19:00:00)\";","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" String actual \u003d deadline.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":16}},{"path":"src/test/java/gudetama/HelpCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.HelpCommand;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"class HelpCommandTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" void testExecute() {","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" HelpCommand command \u003d new HelpCommand();","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" Storage storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" ByteArrayOutputStream outputStream \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" System.setOut(new PrintStream(outputStream));","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" command.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" String actual \u003d command.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" String expected \u003d \"Here is a list of valid commands: \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" \"1. todo \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" \"2. event \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" \"3. deadline \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" \"4. mark \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" \"5. unmark \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" \"6. list \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" \"7. delete \\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" System.setOut(System.out);","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"kayabuttertoastt":41}},{"path":"src/test/java/gudetama/ListCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.ListCommand;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"class ListCommandTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" void testExecute() {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" ListCommand command \u003d new ListCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" Storage storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" ByteArrayOutputStream outputStream \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" System.setOut(new PrintStream(outputStream));","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" String actual \u003d command.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" String expected \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" System.setOut(System.out);","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":34}},{"path":"src/test/java/gudetama/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Todo;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"class TodoTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" void testToString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" Todo todo \u003d new Todo(\"todo run\");","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" String expected \u003d \"[T][ ] todo run\";","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" String actual \u003d todo.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"todo essay","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"todo assignment","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"deadline assignment 2 /by Monday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"deadline email /by Saturday","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"event sports day /from Tues 12pm /to 9pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":12}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-07"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-07"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"checkstyle {","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" toolVersion \u003d \u002710.12.2\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" mainClass.set(\"gudetama.Launcher\")","lastModifiedDate":"2023-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"kayabuttertoastt":22,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"T | false | assignment","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"T | true | cook lunch ","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"kayabuttertoastt":2}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"# Gudetama User Guide","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"Gudetama is an application that helps you to manage tasks. It is optimised for use via a Command Line Interface (CLI).","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"It comes with a user-friendly and intuitive GUI. ","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"Note: ","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"1. All commands are case-sensitive. ","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"2. All dates should be in the dd-MM-yyyy HH:mm:ss format","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"### Add todo ","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"Create a todo ","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":"### Add deadline","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":"Create a deadline","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":"### Add event","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"Create an event ","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":"### Delete task","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":"Delete a task that you have previously added ","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":"### Mark task","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":"Mark completed tasks as done","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":"### Unmark task","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":"Unmark tasks that you have accidentally marked as done","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":"### Find task ","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":"Find a task in your list ","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":"### Help","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":"Ask Gudetama for the valid commands that you can use ","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"### `todo` - Creates a new todo ","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":"Creates a new todo and adds it to your list of tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":"Example of usage: ","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":"`todo run`","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":"Got it. I\u0027ve added this task: ","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":"[T] [] run","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":"Now you have 1 tasks in the list. ","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":"### `deadline` - Creates a new deadline","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":"Creates a new deadline and adds it to your list of tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":"`deadline assignment /by 12-12-2012 12:12:12`","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":"Got it. I\u0027ve added this task: ","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":"[D] [] assignment (by: 12/12/2012 12:12:12)","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":"Now you have 1 tasks in the list. ","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":"### `event` - Creates a new event","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":"Creates a new event and adds it to your list of tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":"`event sports day /from 12-12-2012 12:12:12 ","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":"/to 12-12-2012 18:12:12`","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":88,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":"Got it. I\u0027ve added this task: ","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":"[E] [] sports day (from: 12/12/2012 12:12:12","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"kayabuttertoastt"},"content":"to: 12/12/2012 18:12:12)","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"kayabuttertoastt"},"content":"Now you have 1 tasks in the list. ","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"kayabuttertoastt"},"content":"### `delete` - Deletes a task","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"kayabuttertoastt"},"content":"Deletes a task and removes it from the list of tasks","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"kayabuttertoastt"},"content":"`delete 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"kayabuttertoastt"},"content":"Noted. I\u0027ve removed this task: ","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"kayabuttertoastt"},"content":"[T][] run ","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"kayabuttertoastt"},"content":"Now you have 0 tasks in the list","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"kayabuttertoastt"},"content":"### `mark` - Marks a completed task as done.","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"kayabuttertoastt"},"content":"Marks a completed task as done, ","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"kayabuttertoastt"},"content":"which is indicated by a cross symbol in the list. ","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"kayabuttertoastt"},"content":"`mark 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"kayabuttertoastt"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"kayabuttertoastt"},"content":"[T][X] run ","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":129,"author":{"gitId":"kayabuttertoastt"},"content":"### `unmark` - Unmarks a completed task","lastModifiedDate":"2023-09-22"},{"lineNumber":130,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":131,"author":{"gitId":"kayabuttertoastt"},"content":"Unmarks a completed task as done ","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"kayabuttertoastt"},"content":"which is indicated by the removal of the cross symbol","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"kayabuttertoastt"},"content":"`unmark 1`","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":138,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"kayabuttertoastt"},"content":"OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"kayabuttertoastt"},"content":"[T][] run ","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"kayabuttertoastt"},"content":"### `list` - Lists the tasks ","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":146,"author":{"gitId":"kayabuttertoastt"},"content":"Lists all the task in the tasklist ","lastModifiedDate":"2023-09-22"},{"lineNumber":147,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":148,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":149,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":150,"author":{"gitId":"kayabuttertoastt"},"content":"`list`","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":154,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":155,"author":{"gitId":"kayabuttertoastt"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-22"},{"lineNumber":156,"author":{"gitId":"kayabuttertoastt"},"content":"1. [T][] run ","lastModifiedDate":"2023-09-22"},{"lineNumber":157,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":158,"author":{"gitId":"kayabuttertoastt"},"content":"### `help` - Lists the valid commands ","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"kayabuttertoastt"},"content":"Lists the valid commands that the user can use with examples ","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"kayabuttertoastt"},"content":"`help`","lastModifiedDate":"2023-09-22"},{"lineNumber":165,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":166,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":167,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":168,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":169,"author":{"gitId":"kayabuttertoastt"},"content":"Here is a list of valid commands:","lastModifiedDate":"2023-09-22"},{"lineNumber":170,"author":{"gitId":"kayabuttertoastt"},"content":"1. todo ","lastModifiedDate":"2023-09-22"},{"lineNumber":171,"author":{"gitId":"kayabuttertoastt"},"content":"2. event","lastModifiedDate":"2023-09-22"},{"lineNumber":172,"author":{"gitId":"kayabuttertoastt"},"content":"3. deadline","lastModifiedDate":"2023-09-22"},{"lineNumber":173,"author":{"gitId":"kayabuttertoastt"},"content":"4. mark ","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"kayabuttertoastt"},"content":"5. unmark ","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"kayabuttertoastt"},"content":"6. list ","lastModifiedDate":"2023-09-22"},{"lineNumber":176,"author":{"gitId":"kayabuttertoastt"},"content":"7. delete ","lastModifiedDate":"2023-09-22"},{"lineNumber":177,"author":{"gitId":"kayabuttertoastt"},"content":"```","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"kayabuttertoastt"},"content":"### `find` - Finds task with the specified keyword","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"kayabuttertoastt"},"content":"Finds and returns the tasks in the list that matches the specified keyword","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"kayabuttertoastt"},"content":"Example of usage:","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"kayabuttertoastt"},"content":"`find run`","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"kayabuttertoastt"},"content":"Expected outcome:","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":188,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":189,"author":{"gitId":"kayabuttertoastt"},"content":"Here are the matching tasks in your list:","lastModifiedDate":"2023-09-22"},{"lineNumber":190,"author":{"gitId":"kayabuttertoastt"},"content":"1. [T][] run ","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"kayabuttertoastt":164,"-":27}},{"path":"src/main/java/gudetama/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.Command;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.exceptions.DukeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.parser.Parser;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.DialogBox;","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.geometry.Insets;","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":"public class Duke extends Application {","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" private Storage storage;","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" private TaskList tasklist;","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" private Ui ui;","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" private Scene scene;","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/images/gudetama1.jpg\"));","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" private Image gudetama \u003d new Image(this.getClass().getResourceAsStream(\"/images/gudetama2.jpg\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" this.tasklist \u003d storage.readFromFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" public Duke() {","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" this.storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" this.tasklist \u003d storage.readFromFile();","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" Duke duke \u003d new Duke(\"./data/duke.txt\");","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" this.ui \u003d duke.ui;","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" this.storage \u003d duke.storage;","lastModifiedDate":"2023-09-13"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" this.tasklist \u003d duke.tasklist;","lastModifiedDate":"2023-09-13"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane \u003d new ScrollPane();","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2023-09-13"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2023-09-13"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":" scene \u003d new Scene(mainLayout);","lastModifiedDate":"2023-09-13"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setTitle(\"Gudetama\");","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setResizable(false);","lastModifiedDate":"2023-09-13"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setMinHeight(600.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setMinWidth(400.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setOnCloseRequest(","lastModifiedDate":"2023-09-13"},{"lineNumber":80,"author":{"gitId":"kayabuttertoastt"},"content":" (event) -\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":" close();","lastModifiedDate":"2023-09-13"},{"lineNumber":82,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":83,"author":{"gitId":"kayabuttertoastt"},"content":" );","lastModifiedDate":"2023-09-13"},{"lineNumber":84,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":" mainLayout.setPrefSize(400.0, 600.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":87,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setPrefSize(385, 535);","lastModifiedDate":"2023-09-13"},{"lineNumber":88,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2023-09-13"},{"lineNumber":89,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2023-09-13"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2023-09-13"},{"lineNumber":93,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":94,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2023-09-13"},{"lineNumber":95,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":96,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.setPrefWidth(325.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":97,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"kayabuttertoastt"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":99,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":100,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":101,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":102,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":103,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane.setRightAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":104,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":105,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane.setLeftAnchor(userInput , 1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":106,"author":{"gitId":"kayabuttertoastt"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":107,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":108,"author":{"gitId":"kayabuttertoastt"},"content":" Label welcomeMessage \u003d new Label(ui.showWelcome());","lastModifiedDate":"2023-09-21"},{"lineNumber":109,"author":{"gitId":"kayabuttertoastt"},"content":" welcomeMessage.setPadding(new Insets(10));","lastModifiedDate":"2023-09-21"},{"lineNumber":110,"author":{"gitId":"kayabuttertoastt"},"content":" DialogBox gudetamaDialog \u003d DialogBox.getGudetamaDialog(welcomeMessage, new ImageView(gudetama));","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.getChildren().addAll(gudetamaDialog);","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":113,"author":{"gitId":"kayabuttertoastt"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":114,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.getChildren().add(getDialogLabel(userInput.getText()));","lastModifiedDate":"2023-09-13"},{"lineNumber":115,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.clear();","lastModifiedDate":"2023-09-13"},{"lineNumber":116,"author":{"gitId":"kayabuttertoastt"},"content":" });","lastModifiedDate":"2023-09-13"},{"lineNumber":117,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":118,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":119,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.getChildren().add(getDialogLabel(userInput.getText()));","lastModifiedDate":"2023-09-13"},{"lineNumber":120,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.clear();","lastModifiedDate":"2023-09-13"},{"lineNumber":121,"author":{"gitId":"kayabuttertoastt"},"content":" });","lastModifiedDate":"2023-09-13"},{"lineNumber":122,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":123,"author":{"gitId":"kayabuttertoastt"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":124,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":125,"author":{"gitId":"kayabuttertoastt"},"content":" handleUserInput();","lastModifiedDate":"2023-09-13"},{"lineNumber":126,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":127,"author":{"gitId":"kayabuttertoastt"},"content":" ui.showErrorMessage(e.getMessage());","lastModifiedDate":"2023-09-13"},{"lineNumber":128,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":129,"author":{"gitId":"kayabuttertoastt"},"content":" });","lastModifiedDate":"2023-09-13"},{"lineNumber":130,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":131,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2023-09-13"},{"lineNumber":132,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"kayabuttertoastt"},"content":" handleUserInput();","lastModifiedDate":"2023-09-13"},{"lineNumber":134,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"kayabuttertoastt"},"content":" ui.showErrorMessage(e.getMessage());","lastModifiedDate":"2023-09-13"},{"lineNumber":136,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"kayabuttertoastt"},"content":" });","lastModifiedDate":"2023-09-13"},{"lineNumber":138,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":139,"author":{"gitId":"kayabuttertoastt"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-13"},{"lineNumber":140,"author":{"gitId":"kayabuttertoastt"},"content":" stage.show();","lastModifiedDate":"2023-09-13"},{"lineNumber":141,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":142,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2023-09-13"},{"lineNumber":143,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":144,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":145,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":146,"author":{"gitId":"kayabuttertoastt"},"content":" private Label getDialogLabel(String text) {","lastModifiedDate":"2023-09-13"},{"lineNumber":147,"author":{"gitId":"kayabuttertoastt"},"content":" Label textToAdd \u003d new Label(text);","lastModifiedDate":"2023-09-13"},{"lineNumber":148,"author":{"gitId":"kayabuttertoastt"},"content":" textToAdd.setWrapText(true);","lastModifiedDate":"2023-09-13"},{"lineNumber":149,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":150,"author":{"gitId":"kayabuttertoastt"},"content":" return textToAdd;","lastModifiedDate":"2023-09-13"},{"lineNumber":151,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":153,"author":{"gitId":"kayabuttertoastt"},"content":" private void handleUserInput() throws DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":154,"author":{"gitId":"kayabuttertoastt"},"content":" String userMessage \u003d userInput.getText();","lastModifiedDate":"2023-09-21"},{"lineNumber":155,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":156,"author":{"gitId":"kayabuttertoastt"},"content":" Label userText \u003d new Label(userMessage);","lastModifiedDate":"2023-09-21"},{"lineNumber":157,"author":{"gitId":"kayabuttertoastt"},"content":" Label gudetamaText \u003d new Label(getResponse(userMessage));","lastModifiedDate":"2023-09-22"},{"lineNumber":158,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":159,"author":{"gitId":"kayabuttertoastt"},"content":" DialogBox userDialog \u003d DialogBox.getUserDialog(userText, new ImageView(user));","lastModifiedDate":"2023-09-21"},{"lineNumber":160,"author":{"gitId":"kayabuttertoastt"},"content":" DialogBox gudetamaDialog \u003d DialogBox.getGudetamaDialog(gudetamaText, new ImageView(gudetama));","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":162,"author":{"gitId":"kayabuttertoastt"},"content":" gudetamaText.setPadding(new Insets(10));","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"kayabuttertoastt"},"content":" userText.setPadding(new Insets(10));","lastModifiedDate":"2023-09-21"},{"lineNumber":164,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.setSpacing(10);","lastModifiedDate":"2023-09-21"},{"lineNumber":165,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":166,"author":{"gitId":"kayabuttertoastt"},"content":" dialogContainer.getChildren().addAll(userDialog, gudetamaDialog);","lastModifiedDate":"2023-09-22"},{"lineNumber":167,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":168,"author":{"gitId":"kayabuttertoastt"},"content":" userInput.clear();","lastModifiedDate":"2023-09-13"},{"lineNumber":169,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"kayabuttertoastt"},"content":" private void close(){","lastModifiedDate":"2023-09-13"},{"lineNumber":172,"author":{"gitId":"kayabuttertoastt"},"content":" storage.saveToFile(tasklist.retrieveList());","lastModifiedDate":"2023-09-13"},{"lineNumber":173,"author":{"gitId":"kayabuttertoastt"},"content":" System.exit(0);","lastModifiedDate":"2023-09-13"},{"lineNumber":174,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":175,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":176,"author":{"gitId":"kayabuttertoastt"},"content":" public String getResponse(String input) throws DukeException {","lastModifiedDate":"2023-09-21"},{"lineNumber":177,"author":{"gitId":"kayabuttertoastt"},"content":" Command command \u003d Parser.parse(input);","lastModifiedDate":"2023-09-13"},{"lineNumber":178,"author":{"gitId":"kayabuttertoastt"},"content":" String output \u003d command.execute(tasklist, ui, storage);","lastModifiedDate":"2023-09-13"},{"lineNumber":179,"author":{"gitId":"kayabuttertoastt"},"content":" if (command.isExit()){","lastModifiedDate":"2023-09-13"},{"lineNumber":180,"author":{"gitId":"kayabuttertoastt"},"content":" close();","lastModifiedDate":"2023-09-13"},{"lineNumber":181,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":182,"author":{"gitId":"kayabuttertoastt"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"kayabuttertoastt":182,"-":2}},{"path":"src/main/java/gudetama/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":" * This class serves as the launcher for the Duke application.","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"public class Launcher {","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" Application.launch(Duke.class, args);","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"kayabuttertoastt":13}},{"path":"src/main/java/gudetama/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command that can be executed by the chatbot","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Abstract method that returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * Abstract method that executes the command that adds the task","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the task has been added","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" public abstract String execute(TaskList tasksList, Ui ui, Storage storage);","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":24}},{"path":"src/main/java/gudetama/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Deadline;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to add a deadline to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" * Description of the deadline to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" private String description;","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * Due date for the task","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" private String date;","lastModifiedDate":"2023-09-07"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for DeadlineCommand","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of the deadline to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * @param date Due date for the task","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" public DeadlineCommand(String description, String date) {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" this.date \u003d date;","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command that adds the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the deadline has been added","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" Task deadline \u003d new Deadline(description, date);","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" tasksList.addTask(deadline);","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showAddedTask(tasksList);","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":55}},{"path":"src/main/java/gudetama/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to delete a task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Index of the task to be deleted in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" private final int num;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for DeleteCommand","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the task to be deleted in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" public DeleteCommand(int num) {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" assert num \u003e 0 : \"Task index should be greater than 0.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" this.num \u003d num;","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes a command to delete a task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the task has been deleted","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" String result \u003d ui.showRemovedTask(tasksList, num);","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" tasksList.removeTask(num);","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" return result;","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":46}},{"path":"src/main/java/gudetama/commands/ErrorCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command for handling error messages","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class ErrorCommand extends Command{","lastModifiedDate":"2023-09-21"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" private String message;","lastModifiedDate":"2023-09-21"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" public ErrorCommand(String message){","lastModifiedDate":"2023-09-21"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" this.message \u003d message;","lastModifiedDate":"2023-09-21"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-21"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-21"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-21"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-21"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-21"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to show error message when input is invalid","lastModifiedDate":"2023-09-21"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-21"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to the user","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-21"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-21"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showErrorMessage(message);","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-21"}],"authorContributionMap":{"kayabuttertoastt":37}},{"path":"src/main/java/gudetama/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Event;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to add an event task to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" * Description of the event task to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" private String description;","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * Start date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" private String from;","lastModifiedDate":"2023-09-07"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * End date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" private String to;","lastModifiedDate":"2023-09-07"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for EventCommand","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of the event task to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" * @param from Start date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" * @param to End date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" public EventCommand(String description, String from, String to) {","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command that adds the event task","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the event task has been added","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" Task event \u003d new Event(description, from, to);","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" tasksList.addTask(event);","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showAddedTask(tasksList);","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":61}},{"path":"src/main/java/gudetama/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents the command to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" return true;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to the user","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" storage.saveToFile(tasksList.retrieveList());","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showGoodbye();","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":31}},{"path":"src/main/java/gudetama/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents the command for finding a task from the task list","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" private String input;","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for FindCommand","lastModifiedDate":"2023-09-07"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * @param input Keyword","lastModifiedDate":"2023-09-07"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" public FindCommand(String input) {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" assert input !\u003d null : \"Keyword should not be empty. Enter a keyword to search.\";","lastModifiedDate":"2023-09-20"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to the user","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showFindResults(tasksList, input);","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":44}},{"path":"src/main/java/gudetama/commands/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command for displaying a list of valid commands to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class HelpCommand extends Command{","lastModifiedDate":"2023-09-20"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-20"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-20"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-20"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-20"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-20"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-20"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to show a list of commands that the user can use","lastModifiedDate":"2023-09-20"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-20"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to the user","lastModifiedDate":"2023-09-20"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-20"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-20"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-20"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-20"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showHelp();","lastModifiedDate":"2023-09-20"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-20"}],"authorContributionMap":{"kayabuttertoastt":30}},{"path":"src/main/java/gudetama/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command for handling invalid user inputs","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class InvalidCommand extends Command{","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to show error message when input is invalid","lastModifiedDate":"2023-09-20"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to the user","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showInvalid();","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"kayabuttertoastt":31}},{"path":"src/main/java/gudetama/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to list the tasks in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command to list the tasks in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays the user the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that saves the task to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showList(tasksList);","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":30}},{"path":"src/main/java/gudetama/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to mark a previous marked task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * Index of task to be unmarked","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" private final int num;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for MarkCommand class","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the task to be unmarked.","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" public MarkCommand(int num) {","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" assert num \u003e 0 : \"Task index should be greater than 0.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" this.num \u003d num;","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command that marks the task at the specified index","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list to be marked","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the task has been marked","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" return tasksList.markTask(num);","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":45}},{"path":"src/main/java/gudetama/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Todo;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to add a todo task to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" * Description of the todo task to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" String description;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for TodoCommand","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of the todo task to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command that adds the todo task","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list which contains the tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the todo task has been added","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" Task todo \u003d new Todo(description);","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" tasksList.addTask(todo);","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" return ui.showAddedTask(tasksList);","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":48}},{"path":"src/main/java/gudetama/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.commands;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a command to unmark a previous marked task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Index of task to be unmarked","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" private final int num;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for UnmarkCommand class","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the task to be unmarked.","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" public UnmarkCommand(int num) {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" assert num \u003e 0 : \"Task index should be greater than 0.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" this.num \u003d num;","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a boolean value to indicate whether to exit the program","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A boolean value","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" public boolean isExit() {","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" * Executes the command that unmarks the task at the specified index","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" * @param tasksList Task list to be unmarked","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" * @param ui A UI instance that displays a message to indicate to the user the task has been unmarked","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * @param storage Storage instance that represents the storage of the file","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" public String execute(TaskList tasksList, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" return tasksList.unMarkTask(num);","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":44}},{"path":"src/main/java/gudetama/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.exceptions;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents an exception that occurs in the program","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for DukeException","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" * @param message Exception message that is thrown to the user","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a string representation of the message","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A string containing the message","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" return super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":24}},{"path":"src/main/java/gudetama/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.parser;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.Command;","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.DeadlineCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.DeleteCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.ErrorCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.EventCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.ExitCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.FindCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.HelpCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.InvalidCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.ListCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.MarkCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.TodoCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.UnmarkCommand;","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.exceptions.DukeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents the class that is responsible for parsing user inputs and generating the relevant commands","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * Checks if the user input is valid","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * @param command User input to be validated","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Returns a boolean that indicates if the input is valid","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * @throws DukeException If the user input is not valid","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" public static boolean isValid (String command) throws DukeException {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" String firstString \u003d command.split(\" \")[0];","lastModifiedDate":"2023-09-21"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-21"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" if (command.equals(\"list\") || command.equals(\"bye\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" return true;","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"todo\") \u0026\u0026 command.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-09-21"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Please include a description of the todo.\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" \"Eg. todo run\");","lastModifiedDate":"2023-09-21"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"deadline\") \u0026\u0026 command.split(\" \").length \u003c 2","lastModifiedDate":"2023-09-21"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" \u0026\u0026 !command.contains(\"/by\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Input should have a description and date.\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" \"Eg. deadline assignment /by dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-20"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"event\") \u0026\u0026 command.split(\" \").length \u003c 2){","lastModifiedDate":"2023-09-21"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Input should have a description.\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" \"Eg. event sports day /from dd-MM-yyyy HH:mm:ss /to dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-21"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"event\") \u0026\u0026 !command.contains(\"/from\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Input should have a start date.\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" \"Eg. event sports day /from dd-MM-yyyy HH:mm:ss /to dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-20"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"event\") \u0026\u0026 !command.contains(\"/to\")) {","lastModifiedDate":"2023-09-21"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Input should have an end date.\\n\" +","lastModifiedDate":"2023-09-21"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" \"Eg. event sports day /from dd-MM-yyyy HH:mm:ss /to dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-20"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"mark\") \u0026\u0026 command.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-09-21"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Please include the index of the task to be marked. \" +","lastModifiedDate":"2023-09-21"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" \"Index starts from 0.\");","lastModifiedDate":"2023-09-21"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"unmark\") \u0026\u0026 command.split(\" \").length \u003c 2) {","lastModifiedDate":"2023-09-21"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Please include the index of the task to be unmarked. Index starts from 0.\");","lastModifiedDate":"2023-09-21"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"mark\") \u0026\u0026 !isNumber(command.split(\" \")[1])){","lastModifiedDate":"2023-09-26"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Index of the task should be a number.\");","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (firstString.equals(\"unmark\") \u0026\u0026 !isNumber(command.split(\" \")[1])){","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" throw new DukeException(\"Error! Index of the task should be a number.\");","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" return true;","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" * Function that checks if the input string contains a number","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" * @param string Input string to be checked","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" * @return True if the string contains a number and False if the string does not contain a number","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":" public static boolean isNumber(String string) {","lastModifiedDate":"2023-09-26"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":" Integer.parseInt(string);","lastModifiedDate":"2023-09-26"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":" return true;","lastModifiedDate":"2023-09-26"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":" return false;","lastModifiedDate":"2023-09-26"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":" * Parses the user input and returns the corresponding command","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"kayabuttertoastt"},"content":" * @param command The user input to be parsed.","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Command that corresponds to the parsed user input","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"kayabuttertoastt"},"content":" * @throws DukeException If the user input is not valid","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"kayabuttertoastt"},"content":" public static Command parse(String command) throws DukeException {","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-21"},{"lineNumber":87,"author":{"gitId":"kayabuttertoastt"},"content":" isValid(command);","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (DukeException e){","lastModifiedDate":"2023-09-21"},{"lineNumber":89,"author":{"gitId":"kayabuttertoastt"},"content":" return new ErrorCommand(e.getMessage());","lastModifiedDate":"2023-09-21"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-21"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"kayabuttertoastt"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"todo\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"kayabuttertoastt"},"content":" return new TodoCommand(command.split(\"todo\")[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"event\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"kayabuttertoastt"},"content":" String description \u003d command.split(\"event\")[1].split(\"/from\")[0].stripLeading();","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"kayabuttertoastt"},"content":" String from \u003d command.split(\"\\\\s*/from\\\\s*\")[1].split(\"\\\\s*/to\\\\s*\")[0].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"kayabuttertoastt"},"content":" String to \u003d command.split(\"\\\\s*/to\\\\s*\")[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"kayabuttertoastt"},"content":" return new EventCommand(description, from, to);","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"kayabuttertoastt"},"content":" String description \u003d command.split(\"deadline\")[1].split(\"/by\")[0].trim();","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"kayabuttertoastt"},"content":" String date \u003d command.split(\"by\")[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"kayabuttertoastt"},"content":" return new DeadlineCommand(description, date);","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"kayabuttertoastt"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"delete\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"kayabuttertoastt"},"content":" int index \u003d Integer.parseInt(command.split(\" \")[1]);","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"kayabuttertoastt"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"mark\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"kayabuttertoastt"},"content":" return new MarkCommand(Integer.parseInt(command.split(\" \")[1].trim()));","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"unmark\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":113,"author":{"gitId":"kayabuttertoastt"},"content":" return new UnmarkCommand(Integer.parseInt(command.split(\" \")[1].trim()));","lastModifiedDate":"2023-09-02"},{"lineNumber":114,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"find\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":115,"author":{"gitId":"kayabuttertoastt"},"content":" return new FindCommand(command.split(\" \")[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":116,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (command.split(\" \")[0].equals(\"help\")){","lastModifiedDate":"2023-09-20"},{"lineNumber":117,"author":{"gitId":"kayabuttertoastt"},"content":" return new HelpCommand();","lastModifiedDate":"2023-09-20"},{"lineNumber":118,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"kayabuttertoastt"},"content":" return new InvalidCommand();","lastModifiedDate":"2023-09-13"},{"lineNumber":120,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":122,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":122}},{"path":"src/main/java/gudetama/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.*;","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.exceptions.DukeException;","lastModifiedDate":"2023-09-26"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Todo;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Event;","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Deadline;","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a storage which stores and retrieves the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * The file used for storage","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" private File file;","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" private String path;","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for Storage","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * @param path File path of the file used for storage","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" public Storage(String path) {","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" this.path \u003d path;","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" this.file \u003d new File(path);","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" file.mkdirs();","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * Saves a list of tasks to the storage file","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" * @param inputs List of tasks to be stored","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" public void saveToFile(ArrayList\u003cTask\u003e inputs) {","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" File f \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" if (!f.exists()) {","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" f.mkdir();","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" for (Task t : inputs) {","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" fw.write(t.store() + \"\\n\");","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" fw.close();","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" System.err.println(\"An error occurred while saving to the file: \" + e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" * Reads tasks from the storage file","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" *","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Task list that contains the tasks read from the storage file","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" public TaskList readFromFile() {","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" File directory \u003d new File(\"data\");","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-26"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" directory.mkdir();","lastModifiedDate":"2023-09-26"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(path));","lastModifiedDate":"2023-09-26"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-09-26"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-09-26"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":" String task \u003d line.split(\" \")[0];","lastModifiedDate":"2023-09-26"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":" String[] description \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-09-26"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":" if (task \u003d\u003d \"T\"){","lastModifiedDate":"2023-09-26"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":" Todo todo \u003d new Todo(description[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"kayabuttertoastt"},"content":" taskList.add(todo);","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (task \u003d\u003d \"D\"){","lastModifiedDate":"2023-09-26"},{"lineNumber":82,"author":{"gitId":"kayabuttertoastt"},"content":" Deadline deadline \u003d new Deadline(description[1], description[2]);","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"kayabuttertoastt"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (task \u003d\u003d \"E\"){","lastModifiedDate":"2023-09-26"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":" String date[] \u003d line.split(\"-\");","lastModifiedDate":"2023-09-26"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":" Event event \u003d new Event(description[1], description[2], date[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"kayabuttertoastt"},"content":" taskList.add(event);","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"kayabuttertoastt"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-09-26"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":" reader.close();","lastModifiedDate":"2023-09-26"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":93,"author":{"gitId":"kayabuttertoastt"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-26"},{"lineNumber":94,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"kayabuttertoastt"},"content":" return new TaskList(taskList);","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":97}},{"path":"src/main/java/gudetama/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.tasks;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Due date of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" protected String date;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * Formatted due date of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" protected LocalDateTime formattedDate;","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for Deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of the deadline to be added","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param date Due date for the task","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" public Deadline(String description, String date) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" \"dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" formattedDate \u003d LocalDateTime.parse(this.date, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" public String store() {","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" return String.format(\"D | %s | %s | %s\", this.isDone, this.description,","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" formattedDate.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")));","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" return String.format(\"[D] %s (by: %s)\", super.toString(),","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" formattedDate.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")));","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":58}},{"path":"src/main/java/gudetama/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.tasks;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents an event","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * End date of event task","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" private String end;","lastModifiedDate":"2023-09-20"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" * Start date of event task","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" private String start;","lastModifiedDate":"2023-09-20"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * Formatted start date of event task","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" private LocalDateTime formattedStart;","lastModifiedDate":"2023-09-20"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * Formatted end date of event task","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" private LocalDateTime formattedEnd;","lastModifiedDate":"2023-09-20"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for Event","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of the event task","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" * @param start Start date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" * @param end End date of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" super(description.trim());","lastModifiedDate":"2023-09-01"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" this.end \u003d end;","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" try {","lastModifiedDate":"2023-09-01"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(","lastModifiedDate":"2023-09-01"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" \"dd-MM-yyyy HH:mm:ss\");","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" formattedStart \u003d LocalDateTime.parse(this.start, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" formattedEnd \u003d LocalDateTime.parse(this.end, formatter);","lastModifiedDate":"2023-09-01"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" public String store() {","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" return String.format(\"E | %s | %s | %s - %s\", this.isDone, this.description,","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" formattedStart.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")),","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" formattedEnd.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")));","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the event","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" return String.format(\"[E] %s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2023-09-01"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" formattedStart.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")),","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":" formattedEnd.format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HH:mm:ss\")));","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":72}},{"path":"src/main/java/gudetama/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.tasks;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents an task","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Description of task","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" * Indicates whether the task is done or not","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor of Task","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of task","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns a status icon to represent the task\u0027s completion status","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Status icon to represent the task\u0027s completion status","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" * Marks the task as undone","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" * Marks the task as done","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" public String store() {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" return \" \";","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description ;","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":65}},{"path":"src/main/java/gudetama/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.tasks;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a task list","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" * List of tasks stored in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" private ArrayList\u003cTask\u003e inputs;","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor of TaskList","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" * @param inputs The initial list of tasks in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" public TaskList(ArrayList\u003cTask\u003e inputs) {","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" this.inputs \u003d inputs;","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" * Adds the task to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" * @param task Task to be added to the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" this.inputs.add(task);","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" * Removes the task at a particular index as done","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the particular task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" public String removeTask(int num) {","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" int index \u003d num - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" if (num \u003c 0) {","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value cannot be negative. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003d\u003d 0){","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value should be an integer greater than 0. Please try again.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003e inputs.size()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The input value is wrong. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" String deleted \u003d inputs.get(index).toString();","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" inputs.remove(index);","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The task has been deleted.\\n\"","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" + deleted;","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" * Marks the task at a particular index as done","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the particular task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" public String markTask(int num) {","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" int index \u003d num - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" if (num \u003c 0) {","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value cannot be negative. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003d\u003d 0){","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value should be an integer greater than 0. Please try again.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003e inputs.size()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The input value is wrong. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" inputs.get(index).markAsDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" String output \u003d \"Nice! I\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" + \" \" + inputs.get(index);","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":" * Unmarks the task at a particular index as done","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the particular task in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":" public String unMarkTask(int num) {","lastModifiedDate":"2023-09-13"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":" int index \u003d num - 1;","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":" if (num \u003c 0) {","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value cannot be negative. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":80,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003d\u003d 0){","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The value should be an integer greater than 0. Please try again.\";","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"kayabuttertoastt"},"content":" } else if (num \u003e inputs.size()) {","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"kayabuttertoastt"},"content":" return \"The input value is wrong. Please try again.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":84,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":" inputs.get(index).markAsUndone();","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":" String output \u003d \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"kayabuttertoastt"},"content":" + \" \" + inputs.get(index);","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":89,"author":{"gitId":"kayabuttertoastt"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the number of tasks in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Number of tasks in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"kayabuttertoastt"},"content":" public int len() {","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"kayabuttertoastt"},"content":" return inputs.size();","lastModifiedDate":"2023-09-07"},{"lineNumber":99,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"kayabuttertoastt"},"content":" * Retrieves the list of tasks stored in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"kayabuttertoastt"},"content":" * @return ArrayList that contains the tasks stored in the task list","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"kayabuttertoastt"},"content":" public ArrayList\u003cTask\u003e retrieveList() {","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"kayabuttertoastt"},"content":" return inputs;","lastModifiedDate":"2023-09-07"},{"lineNumber":107,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"kayabuttertoastt"},"content":" * Filters the list and returns the tasks that contains the text","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"kayabuttertoastt"},"content":" * specified by the user in their description.","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"kayabuttertoastt"},"content":" * @param input The input text to filter the list","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"kayabuttertoastt"},"content":" * @return ArrayList of Task objects that contain the input in their description","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"kayabuttertoastt"},"content":" public ArrayList\u003cTask\u003e getFilteredTasks(String input){","lastModifiedDate":"2023-09-02"},{"lineNumber":116,"author":{"gitId":"kayabuttertoastt"},"content":" ArrayList\u003cTask\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":117,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"kayabuttertoastt"},"content":" for (int i \u003d 0; i \u003c inputs.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"kayabuttertoastt"},"content":" if (inputs.get(i).description.contains(input)) {","lastModifiedDate":"2023-09-02"},{"lineNumber":120,"author":{"gitId":"kayabuttertoastt"},"content":" output.add(inputs.get(i));","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":122,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":123,"author":{"gitId":"kayabuttertoastt"},"content":" return output;","lastModifiedDate":"2023-09-02"},{"lineNumber":124,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":125}},{"path":"src/main/java/gudetama/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.tasks;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents an todo","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for todo","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" * @param description Description of todo","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the todo","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the todo","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" public String store() {","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" return String.format(\"T | %s | %s\", this.isDone, this.description);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" * Returns the formatted string representation of the todo","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" * @return Formatted string representation of the todo","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":32}},{"path":"src/main/java/gudetama/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a dialog box","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" private Label text;","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for DialogBox","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" * @param l Label for the dialog box","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" * @param iv Image view for the dialog box","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" public DialogBox(Label l, ImageView iv) {","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" text \u003d l;","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" displayPicture \u003d iv;","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" text.setWrapText(true);","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" displayPicture.setFitWidth(100.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" displayPicture.setFitHeight(100.0);","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" this.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" this.getChildren().addAll(text, displayPicture);","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" * Flips the alignment of the dialog box to display messages from the left","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" private void flip() {","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" this.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" FXCollections.reverse(tmp);","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" this.getChildren().setAll(tmp);","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" * Creates a user dialog box with Label and ImageView that is provided","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" * @param l Label for the user\u0027s message","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" * @param iv ImageView for the user\u0027s display picture","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A DialogBox representing the user\u0027s message","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" public static DialogBox getUserDialog(Label l, ImageView iv) {","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":" return new DialogBox(l, iv);","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" * Creates a Gudetama dialog box with Label and ImageView that is provided","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" * @param l Label for Gudetama\u0027s message","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" * @param iv ImageView for Gudetama\u0027s display picture","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" * @return A DialogBox representing Gudetama\u0027s message","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":" public static DialogBox getGudetamaDialog(Label l, ImageView iv) {","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" var db \u003d new DialogBox(l, iv);","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" db.flip();","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" return db;","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"kayabuttertoastt":68}},{"path":"src/main/java/gudetama/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama.ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"/**","lastModifiedDate":"2023-09-07"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" * Represents a user interface that interacts with the user","lastModifiedDate":"2023-09-07"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"public class Ui {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" * Scanner that is used to read the input from the user","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" private final Scanner scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" * String contains the help message that contains a list of valid commands","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" * that the user can use.","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" private final String help \u003d \"Here is a list of valid commands: \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" \"1. todo \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":" \"2. event \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" \"3. deadline \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" \"4. mark \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" \"5. unmark \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" \"6. list \\n\" +","lastModifiedDate":"2023-09-20"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" \"7. delete \\n\";","lastModifiedDate":"2023-09-20"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" * Constructor for Ui","lastModifiedDate":"2023-09-07"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" public Ui() {","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" * Displays the welcome message to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" * @return String containing the welcome message to be displayed to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":42,"author":{"gitId":"kayabuttertoastt"},"content":" public String showWelcome() {","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"kayabuttertoastt"},"content":" return \"Hello! I\u0027m Gudetama.\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"kayabuttertoastt"},"content":" + \"What can I do for you?\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"kayabuttertoastt"},"content":" * Displays the invalid message to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"kayabuttertoastt"},"content":" * @return String containing the invalid message to be displayed to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"kayabuttertoastt"},"content":" public String showInvalid(){","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"kayabuttertoastt"},"content":" return \"Invalid Command. Please Try Again! \\n\" + help;","lastModifiedDate":"2023-09-20"},{"lineNumber":53,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-20"},{"lineNumber":54,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":55,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"kayabuttertoastt"},"content":" * Displays a help message which contains a list of valid commands","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"kayabuttertoastt"},"content":" * that the user can use in their input.","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"kayabuttertoastt"},"content":" * @return String containing the help message to be displayed","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"kayabuttertoastt"},"content":" public String showHelp(){","lastModifiedDate":"2023-09-20"},{"lineNumber":61,"author":{"gitId":"kayabuttertoastt"},"content":" return help;","lastModifiedDate":"2023-09-20"},{"lineNumber":62,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"kayabuttertoastt"},"content":" * Displays the error message to the user.","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"kayabuttertoastt"},"content":" * @param message Error message to be displayed to the user","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"kayabuttertoastt"},"content":" * @return String containing the provided error message","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"kayabuttertoastt"},"content":" public String showErrorMessage(String message){","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"kayabuttertoastt"},"content":" return message;","lastModifiedDate":"2023-09-21"},{"lineNumber":71,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":74,"author":{"gitId":"kayabuttertoastt"},"content":" * Prints goodbye message","lastModifiedDate":"2023-09-07"},{"lineNumber":75,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":76,"author":{"gitId":"kayabuttertoastt"},"content":" public String showGoodbye() {","lastModifiedDate":"2023-09-13"},{"lineNumber":77,"author":{"gitId":"kayabuttertoastt"},"content":" String message \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-09-26"},{"lineNumber":78,"author":{"gitId":"kayabuttertoastt"},"content":" return message;","lastModifiedDate":"2023-09-26"},{"lineNumber":79,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":82,"author":{"gitId":"kayabuttertoastt"},"content":" * Prints out the tasks in the task list.","lastModifiedDate":"2023-09-07"},{"lineNumber":83,"author":{"gitId":"kayabuttertoastt"},"content":" * @param","lastModifiedDate":"2023-09-07"},{"lineNumber":84,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":85,"author":{"gitId":"kayabuttertoastt"},"content":" public String showList(TaskList taskList) {","lastModifiedDate":"2023-09-13"},{"lineNumber":86,"author":{"gitId":"kayabuttertoastt"},"content":" String result \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":87,"author":{"gitId":"kayabuttertoastt"},"content":" for (int i \u003d 0; i \u003c taskList.len(); i++) {","lastModifiedDate":"2023-09-07"},{"lineNumber":88,"author":{"gitId":"kayabuttertoastt"},"content":" result +\u003d (i + 1) + \". \" + taskList.retrieveList().get(i) + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":89,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":91,"author":{"gitId":"kayabuttertoastt"},"content":" return result;","lastModifiedDate":"2023-09-13"},{"lineNumber":92,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":95,"author":{"gitId":"kayabuttertoastt"},"content":" * Prints out the newly added task in the task list","lastModifiedDate":"2023-09-07"},{"lineNumber":96,"author":{"gitId":"kayabuttertoastt"},"content":" * @param taskList TaskList containing the list of tasks","lastModifiedDate":"2023-09-07"},{"lineNumber":97,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":98,"author":{"gitId":"kayabuttertoastt"},"content":" public String showAddedTask(TaskList taskList) {","lastModifiedDate":"2023-09-13"},{"lineNumber":99,"author":{"gitId":"kayabuttertoastt"},"content":" String task \u003d \"Got it. I\u0027ve added this task: \\n\"","lastModifiedDate":"2023-09-13"},{"lineNumber":100,"author":{"gitId":"kayabuttertoastt"},"content":" + taskList.retrieveList().get(taskList.len() - 1).toString()","lastModifiedDate":"2023-09-13"},{"lineNumber":101,"author":{"gitId":"kayabuttertoastt"},"content":" + \"\\n Now you have \" + taskList.len() + \" tasks in the list\";","lastModifiedDate":"2023-09-13"},{"lineNumber":102,"author":{"gitId":"kayabuttertoastt"},"content":" return task;","lastModifiedDate":"2023-09-13"},{"lineNumber":103,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":106,"author":{"gitId":"kayabuttertoastt"},"content":" * Prints out the task that has been removed by the user","lastModifiedDate":"2023-09-07"},{"lineNumber":107,"author":{"gitId":"kayabuttertoastt"},"content":" * @param taskList TaskList containing the list of tasks","lastModifiedDate":"2023-09-07"},{"lineNumber":108,"author":{"gitId":"kayabuttertoastt"},"content":" * @param num Index of the task to be removed","lastModifiedDate":"2023-09-07"},{"lineNumber":109,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":110,"author":{"gitId":"kayabuttertoastt"},"content":" public String showRemovedTask(TaskList taskList, int num) {","lastModifiedDate":"2023-09-13"},{"lineNumber":111,"author":{"gitId":"kayabuttertoastt"},"content":" int total \u003d taskList.len() - 1;","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"kayabuttertoastt"},"content":" String output \u003d \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"kayabuttertoastt"},"content":" + taskList.retrieveList().get(num - 1).toString()","lastModifiedDate":"2023-09-22"},{"lineNumber":114,"author":{"gitId":"kayabuttertoastt"},"content":" + \"\\n Now you have \" + total + \" tasks in the list\";","lastModifiedDate":"2023-09-13"},{"lineNumber":115,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":116,"author":{"gitId":"kayabuttertoastt"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":117,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"kayabuttertoastt"},"content":" /**","lastModifiedDate":"2023-09-07"},{"lineNumber":120,"author":{"gitId":"kayabuttertoastt"},"content":" * Displays the tasks with the keyword that the user inputs","lastModifiedDate":"2023-09-07"},{"lineNumber":121,"author":{"gitId":"kayabuttertoastt"},"content":" * @param taskList TaskList containing the list of tasks","lastModifiedDate":"2023-09-07"},{"lineNumber":122,"author":{"gitId":"kayabuttertoastt"},"content":" * @param input Keyword that the user inputs","lastModifiedDate":"2023-09-07"},{"lineNumber":123,"author":{"gitId":"kayabuttertoastt"},"content":" */","lastModifiedDate":"2023-09-07"},{"lineNumber":124,"author":{"gitId":"kayabuttertoastt"},"content":" public String showFindResults(TaskList taskList , String input) {","lastModifiedDate":"2023-09-13"},{"lineNumber":125,"author":{"gitId":"kayabuttertoastt"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getFilteredTasks(input);","lastModifiedDate":"2023-09-02"},{"lineNumber":126,"author":{"gitId":"kayabuttertoastt"},"content":" String result \u003d \"Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":128,"author":{"gitId":"kayabuttertoastt"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-02"},{"lineNumber":129,"author":{"gitId":"kayabuttertoastt"},"content":" return \"There are no tasks with that keyword.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":130,"author":{"gitId":"kayabuttertoastt"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":131,"author":{"gitId":"kayabuttertoastt"},"content":" for (int i \u003d 1; i \u003c\u003d list.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"kayabuttertoastt"},"content":" result +\u003d i + \". \" + list.get(i - 1).toString() + \"\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":135,"author":{"gitId":"kayabuttertoastt"},"content":" return result;","lastModifiedDate":"2023-09-13"},{"lineNumber":136,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":138,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":139}},{"path":"src/test/java/gudetama/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Deadline;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"class DeadlineTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" void testToString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" Deadline deadline \u003d new Deadline(\"deadline run\" , \"12-12-2012 19:00:00\");","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" String expected \u003d \"[D] [ ] deadline run (by: 12/12/2012 19:00:00)\";","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" String actual \u003d deadline.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":16}},{"path":"src/test/java/gudetama/HelpCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.HelpCommand;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"class HelpCommandTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" void testExecute() {","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" HelpCommand command \u003d new HelpCommand();","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" Storage storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" ByteArrayOutputStream outputStream \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" System.setOut(new PrintStream(outputStream));","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" command.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":" String actual \u003d command.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" String expected \u003d \"Here is a list of valid commands: \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":" \"1. todo \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" \"2. event \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" \"3. deadline \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":" \"4. mark \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":" \"5. unmark \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":" \"6. list \\n\" +","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"kayabuttertoastt"},"content":" \"7. delete \\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"kayabuttertoastt"},"content":" System.setOut(System.out);","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"kayabuttertoastt"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"kayabuttertoastt":41}},{"path":"src/test/java/gudetama/ListCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.commands.ListCommand;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.storage.Storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.TaskList;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.ui.Ui;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"import java.io.PrintStream;","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":"class ListCommandTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":" void testExecute() {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"kayabuttertoastt"},"content":" ListCommand command \u003d new ListCommand();","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"kayabuttertoastt"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"kayabuttertoastt"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"kayabuttertoastt"},"content":" Storage storage \u003d new Storage(\"./data/duke.txt\");","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"kayabuttertoastt"},"content":" ByteArrayOutputStream outputStream \u003d new ByteArrayOutputStream();","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"kayabuttertoastt"},"content":" System.setOut(new PrintStream(outputStream));","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"kayabuttertoastt"},"content":" String actual \u003d command.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"kayabuttertoastt"},"content":" String expected \u003d \"Here are the tasks in your list:\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"kayabuttertoastt"},"content":" System.setOut(System.out);","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"kayabuttertoastt"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":34}},{"path":"src/test/java/gudetama/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"package gudetama;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"import gudetama.tasks.Todo;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"class TodoTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":" void testToString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":" Todo todo \u003d new Todo(\"todo run\");","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":" String expected \u003d \"[T][ ] todo run\";","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":" String actual \u003d todo.toString();","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"kayabuttertoastt"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"kayabuttertoastt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"kayabuttertoastt"},"content":"}","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"kayabuttertoastt"},"content":"","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"kayabuttertoastt":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kayabuttertoastt"},"content":"todo essay","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"kayabuttertoastt"},"content":"todo assignment","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"kayabuttertoastt"},"content":"deadline assignment 2 /by Monday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"kayabuttertoastt"},"content":"deadline email /by Saturday","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"kayabuttertoastt"},"content":"event sports day /from Tues 12pm /to 9pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"kayabuttertoastt"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"kayabuttertoastt"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"kayabuttertoastt"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"kayabuttertoastt"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"kayabuttertoastt"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"kayabuttertoastt"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"kayabuttertoastt"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"kayabuttertoastt":12}}] diff --git a/kayabuttertoastt_ip_master/commits.json b/kayabuttertoastt_ip_master/commits.json index 19edb3d5..3e2e4120 100644 --- a/kayabuttertoastt_ip_master/commits.json +++ b/kayabuttertoastt_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"kayabuttertoastt":[{"date":"2023-08-24","commitResults":[{"hash":"e74fdbae701d3f7defe37a9a0034ae0e2da245a8","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"a4dcac727f1aa096f7ffbf6e645bf8851cd35235","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"8c07c1d5ecabda57023267329fe5a736397f711f","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"6479eddd69413d955544863a1bb22331fc1b9877","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":11}}},{"hash":"d3b9c41acd12857058782ae693831631fcd46317","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":1}}},{"hash":"a0344303c69fcdde7cbda669d4e2e76338d2e25e","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0}}},{"hash":"768a8dbb63e4b900c5c5e11596ce958b8e52f181","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":20}}},{"hash":"c8ebd187881aeb2413995bfea549009b0b2339f6","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}}]},{"date":"2023-08-31","commitResults":[{"hash":"2645ee7b5627812c9b0dc2badcbc189ae733fb58","isMergeCommit":false,"messageTitle":"Add task list save and load functionality from disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":92,"deletions":10}}}]},{"date":"2023-09-01","commitResults":[{"hash":"5c939b3522d3d3dcebfbd1450b8fd4ec6c8c0f65","isMergeCommit":false,"messageTitle":"Improve date handling","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":14}}}]},{"date":"2023-09-02","commitResults":[{"hash":"e135cd749472f34afe35efde8a450114d778f828","isMergeCommit":false,"messageTitle":"Incorporate OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":365,"deletions":166}}},{"hash":"fffa30d31b613cfbdf32085f74b6674924949ba8","isMergeCommit":false,"messageTitle":"Add Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":2}}},{"hash":"2033c16102088351ece50deb57f56bca76810bb6","isMergeCommit":false,"messageTitle":"Revert \"Add Packages\"","messageBody":"This reverts commit fffa30d31b613cfbdf32085f74b6674924949ba8.\n","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":90}}},{"hash":"d78e09d92ba33b741597f1b60c7700b7da141289","isMergeCommit":false,"messageTitle":"Add Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":5}}},{"hash":"2f5db1c5da6266799f073cb97b0a8013c6ea35ab","isMergeCommit":true,"messageTitle":"Merge pull request #1 from kayabuttertoastt/add-gradle-support","messageBody":"Add gradle support","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"5ff028152d562dd91a3f48ab15d6792dc2264818","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/kayabuttertoastt/ip","messageBody":"* \u0027master\u0027 of https://github.com/kayabuttertoastt/ip:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"d99bd5680c9362874e5977acacce6a607d7a7a6b","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":1}}},{"hash":"34e2c7658fec91ef4e72ee8379c06fb949f4f15c","isMergeCommit":false,"messageTitle":"Add JavaDocs","messageBody":"","tags":["A-JavaDoc","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":381,"deletions":1}}},{"hash":"ca08980b42821e8eeb3ea69bbdd5d884936e0123","isMergeCommit":false,"messageTitle":"Edit code to follow the Coding Standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":59}}},{"hash":"38ac5553908e2dca176ed2f01ddcbf13f322cc7c","isMergeCommit":false,"messageTitle":"Add find feature","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":72,"deletions":8}}}]},{"date":"2023-09-07","commitResults":[{"hash":"a6877e9d5d98c47e08784ede678aa09dba55e80c","isMergeCommit":false,"messageTitle":"Set up Checkstyle","messageBody":"","tags":["A-Checkstyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":115,"deletions":59}}}]},{"date":"2023-09-13","commitResults":[{"hash":"256e0e9e77a296f754f4111d721abc2ceb005d44","isMergeCommit":false,"messageTitle":"Add GUI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":1},"txt":{"insertions":1,"deletions":2},"java":{"insertions":338,"deletions":80}}}]},{"date":"2023-09-20","commitResults":[{"hash":"a92eee013a0e2141279efc6b30034fc907a428ed","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"Command classes: Assertions were not implemented.\n\nThis caused key assumptions to not be held at various\npoints in the code.\n\nAssertions were used to ensure these key assumptions are held.\n","tags":["A-FullCommitMessage","A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"9811f216dacc451440ead29cf237705518e2c107","isMergeCommit":true,"messageTitle":"Merge pull request #3 from kayabuttertoastt/branch-Assertions","messageBody":"Add assertions","fileTypesAndContributionMap":{}},{"hash":"c81570c84f6ab10f597b094860b292b2549bcfde","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"Code had minor code quality issues.\n\nIssues resolved:\n* Removed dead code\n* Edited header comments to follow specified format\n* Changed access modifiers\n* Edited error messages to be more specific\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":30}}},{"hash":"2a81a06dc0f6a4fc42189ca04d7a625bc27c2152","isMergeCommit":true,"messageTitle":"Merge pull request #4 from kayabuttertoastt/branch-CodeQuality","messageBody":"Improve code quality","fileTypesAndContributionMap":{}},{"hash":"56d5b0c4a3ab833cec3abc9791d7d84d117a6ff5","isMergeCommit":false,"messageTitle":"Add Help Command","messageBody":"Provide in-App guidance to users by adding a help command that can be executed by the user when they need help.\n\nInvalid Command also contains valid commands that the user can execute.\n","tags":["C-Help","BCD-Extension"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":44,"deletions":2}}},{"hash":"e0aadf705669af6e5ebe52460b3f8307dff06e2b","isMergeCommit":true,"messageTitle":"Merge pull request #5 from kayabuttertoastt/branch-C-Help","messageBody":"Add Help Command","fileTypesAndContributionMap":{}},{"hash":"d5bd2aaf7b521bec3963af1a9d67acfd4f7d9170","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}}]},{"date":"2023-09-21","commitResults":[{"hash":"41b58b6034feb9eff85a729f3e54b66fe3b5d001","isMergeCommit":false,"messageTitle":"Edit error messages","messageBody":"Edited error messages to be more specific and fixed bugs related to the display of messages when an exception is thrown.\n","tags":["A-MoreErrorHandling"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":38}}},{"hash":"6c85fdcb1c0c918ca3466b0bea83fd0d305e25a6","isMergeCommit":false,"messageTitle":"Improve GUI","messageBody":"Added welcome message and spacing in between responses for better UI.\n","tags":["A-BetterGui"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":5}}},{"hash":"7be57258a23ea3096c06f23755e4df8820c40e11","isMergeCommit":false,"messageTitle":"Improve GUI","messageBody":"* Added padding between responses as well as between image and text\n* Changed alignment such that chatbot responses are left-aligned and user responses are right-aligned.\n","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":13}}}]},{"date":"2023-09-22","commitResults":[{"hash":"476f8cff471d3cea6deccc1c3f1e58aea13b1651","isMergeCommit":false,"messageTitle":"Add Javadocs and Rename Application","messageBody":"Changes:\n* Application is renamed from \"Chatbot\" to \"Gudetama\" to make the images in the GUI\n* Javadocs is added to most of the classes and their methods\n","fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":114}}},{"hash":"16330d1d7bc53a190058456984951db533e6c52e","isMergeCommit":false,"messageTitle":"Modify README.md","messageBody":"Modifications:\n* Include brief introduction to the application\n* Include Features of the application\n* Include Usage of features\n","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":15},"md":{"insertions":172,"deletions":10}}},{"hash":"60375322bfca154dafc4382533bcb8316b54ae55","isMergeCommit":false,"messageTitle":"Added more testcases","messageBody":"Added testcase to check HelpCommand and fixed bugs.\n","tags":["A-Release","A-MoreTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":46,"deletions":15},"md":{"insertions":4,"deletions":4}}}]},{"date":"2023-09-24","commitResults":[{"hash":"46177deaccddd32b43fb8d37ddfbe6133c62df7e","isMergeCommit":false,"messageTitle":"Fixed Gradle Bugs","messageBody":"","tags":["A-Release-New"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"kayabuttertoastt":{"java":1589,"md":164,"fxml":0,"sh":0,"bat":0,"gradle":22,"txt":12}},"authorContributionVariance":{"kayabuttertoastt":66588.35},"authorDisplayNameMap":{"kayabuttertoastt":"CS2103T-F08-4 KIRT..THAM"}} +{"authorDailyContributionsMap":{"kayabuttertoastt":[{"date":"2023-08-24","commitResults":[{"hash":"e74fdbae701d3f7defe37a9a0034ae0e2da245a8","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"a4dcac727f1aa096f7ffbf6e645bf8851cd35235","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"8c07c1d5ecabda57023267329fe5a736397f711f","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":3}}},{"hash":"6479eddd69413d955544863a1bb22331fc1b9877","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":11}}},{"hash":"d3b9c41acd12857058782ae693831631fcd46317","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":1}}},{"hash":"a0344303c69fcdde7cbda669d4e2e76338d2e25e","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0}}},{"hash":"768a8dbb63e4b900c5c5e11596ce958b8e52f181","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":20}}},{"hash":"c8ebd187881aeb2413995bfea549009b0b2339f6","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":3}}}]},{"date":"2023-08-31","commitResults":[{"hash":"2645ee7b5627812c9b0dc2badcbc189ae733fb58","isMergeCommit":false,"messageTitle":"Add task list save and load functionality from disk","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":92,"deletions":10}}}]},{"date":"2023-09-01","commitResults":[{"hash":"5c939b3522d3d3dcebfbd1450b8fd4ec6c8c0f65","isMergeCommit":false,"messageTitle":"Improve date handling","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":14}}}]},{"date":"2023-09-02","commitResults":[{"hash":"e135cd749472f34afe35efde8a450114d778f828","isMergeCommit":false,"messageTitle":"Incorporate OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":365,"deletions":166}}},{"hash":"fffa30d31b613cfbdf32085f74b6674924949ba8","isMergeCommit":false,"messageTitle":"Add Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":2}}},{"hash":"2033c16102088351ece50deb57f56bca76810bb6","isMergeCommit":false,"messageTitle":"Revert \"Add Packages\"","messageBody":"This reverts commit fffa30d31b613cfbdf32085f74b6674924949ba8.\n","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":90}}},{"hash":"d78e09d92ba33b741597f1b60c7700b7da141289","isMergeCommit":false,"messageTitle":"Add Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":5}}},{"hash":"2f5db1c5da6266799f073cb97b0a8013c6ea35ab","isMergeCommit":true,"messageTitle":"Merge pull request #1 from kayabuttertoastt/add-gradle-support","messageBody":"Add gradle support","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"5ff028152d562dd91a3f48ab15d6792dc2264818","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/kayabuttertoastt/ip","messageBody":"* \u0027master\u0027 of https://github.com/kayabuttertoastt/ip:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"d99bd5680c9362874e5977acacce6a607d7a7a6b","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":1}}},{"hash":"34e2c7658fec91ef4e72ee8379c06fb949f4f15c","isMergeCommit":false,"messageTitle":"Add JavaDocs","messageBody":"","tags":["A-JavaDoc","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":381,"deletions":1}}},{"hash":"ca08980b42821e8eeb3ea69bbdd5d884936e0123","isMergeCommit":false,"messageTitle":"Edit code to follow the Coding Standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":59}}},{"hash":"38ac5553908e2dca176ed2f01ddcbf13f322cc7c","isMergeCommit":false,"messageTitle":"Add find feature","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":72,"deletions":8}}}]},{"date":"2023-09-07","commitResults":[{"hash":"a6877e9d5d98c47e08784ede678aa09dba55e80c","isMergeCommit":false,"messageTitle":"Set up Checkstyle","messageBody":"","tags":["A-Checkstyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":115,"deletions":59}}}]},{"date":"2023-09-13","commitResults":[{"hash":"256e0e9e77a296f754f4111d721abc2ceb005d44","isMergeCommit":false,"messageTitle":"Add GUI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":1},"txt":{"insertions":1,"deletions":2},"java":{"insertions":338,"deletions":80}}}]},{"date":"2023-09-20","commitResults":[{"hash":"a92eee013a0e2141279efc6b30034fc907a428ed","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"Command classes: Assertions were not implemented.\n\nThis caused key assumptions to not be held at various\npoints in the code.\n\nAssertions were used to ensure these key assumptions are held.\n","tags":["A-FullCommitMessage","A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"9811f216dacc451440ead29cf237705518e2c107","isMergeCommit":true,"messageTitle":"Merge pull request #3 from kayabuttertoastt/branch-Assertions","messageBody":"Add assertions","fileTypesAndContributionMap":{}},{"hash":"c81570c84f6ab10f597b094860b292b2549bcfde","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"Code had minor code quality issues.\n\nIssues resolved:\n* Removed dead code\n* Edited header comments to follow specified format\n* Changed access modifiers\n* Edited error messages to be more specific\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":30}}},{"hash":"2a81a06dc0f6a4fc42189ca04d7a625bc27c2152","isMergeCommit":true,"messageTitle":"Merge pull request #4 from kayabuttertoastt/branch-CodeQuality","messageBody":"Improve code quality","fileTypesAndContributionMap":{}},{"hash":"56d5b0c4a3ab833cec3abc9791d7d84d117a6ff5","isMergeCommit":false,"messageTitle":"Add Help Command","messageBody":"Provide in-App guidance to users by adding a help command that can be executed by the user when they need help.\n\nInvalid Command also contains valid commands that the user can execute.\n","tags":["C-Help","BCD-Extension"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":44,"deletions":2}}},{"hash":"e0aadf705669af6e5ebe52460b3f8307dff06e2b","isMergeCommit":true,"messageTitle":"Merge pull request #5 from kayabuttertoastt/branch-C-Help","messageBody":"Add Help Command","fileTypesAndContributionMap":{}},{"hash":"d5bd2aaf7b521bec3963af1a9d67acfd4f7d9170","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":1}}}]},{"date":"2023-09-21","commitResults":[{"hash":"41b58b6034feb9eff85a729f3e54b66fe3b5d001","isMergeCommit":false,"messageTitle":"Edit error messages","messageBody":"Edited error messages to be more specific and fixed bugs related to the display of messages when an exception is thrown.\n","tags":["A-MoreErrorHandling"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":38}}},{"hash":"6c85fdcb1c0c918ca3466b0bea83fd0d305e25a6","isMergeCommit":false,"messageTitle":"Improve GUI","messageBody":"Added welcome message and spacing in between responses for better UI.\n","tags":["A-BetterGui"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":5}}},{"hash":"7be57258a23ea3096c06f23755e4df8820c40e11","isMergeCommit":false,"messageTitle":"Improve GUI","messageBody":"* Added padding between responses as well as between image and text\n* Changed alignment such that chatbot responses are left-aligned and user responses are right-aligned.\n","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":13}}}]},{"date":"2023-09-22","commitResults":[{"hash":"476f8cff471d3cea6deccc1c3f1e58aea13b1651","isMergeCommit":false,"messageTitle":"Add Javadocs and Rename Application","messageBody":"Changes:\n* Application is renamed from \"Chatbot\" to \"Gudetama\" to make the images in the GUI\n* Javadocs is added to most of the classes and their methods\n","fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":114}}},{"hash":"16330d1d7bc53a190058456984951db533e6c52e","isMergeCommit":false,"messageTitle":"Modify README.md","messageBody":"Modifications:\n* Include brief introduction to the application\n* Include Features of the application\n* Include Usage of features\n","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":15},"md":{"insertions":172,"deletions":10}}},{"hash":"60375322bfca154dafc4382533bcb8316b54ae55","isMergeCommit":false,"messageTitle":"Added more testcases","messageBody":"Added testcase to check HelpCommand and fixed bugs.\n","tags":["A-Release","A-MoreTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":46,"deletions":15},"md":{"insertions":4,"deletions":4}}}]},{"date":"2023-09-24","commitResults":[{"hash":"46177deaccddd32b43fb8d37ddfbe6133c62df7e","isMergeCommit":false,"messageTitle":"Fixed Gradle Bugs","messageBody":"","tags":["A-Release-New"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1}}}]},{"date":"2023-09-26","commitResults":[{"hash":"1f55b158a1be7ed04102396f2d9af1b7c172f90a","isMergeCommit":false,"messageTitle":"Fixed bugs and error messages","messageBody":"Fixed bugs related to duke.txt file and added more specific error messages for mark and unmark commands\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":67,"deletions":26}}}]}]},"authorFileTypeContributionMap":{"kayabuttertoastt":{"java":1630,"md":164,"fxml":0,"sh":0,"bat":0,"gradle":22,"txt":14}},"authorContributionVariance":{"kayabuttertoastt":63452.32},"authorDisplayNameMap":{"kayabuttertoastt":"CS2103T-F08-4 KIRT..THAM"}} diff --git a/m1oojv_ip_master/authorship.json b/m1oojv_ip_master/authorship.json index 1cdc0a40..a477e6f6 100644 --- a/m1oojv_ip_master/authorship.json +++ b/m1oojv_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":"m1oojv"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" mainClass.set(\"sam.Launcher\")","lastModifiedDate":"2023-09-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" archiveBaseName \u003d \"sam\"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"m1oojv":16,"-":40}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"T | 0 | zoo | Tags: #fun #grr #yay ","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"E | 1 | go to projecting | Tags: #notfun | 2019-10-15T18:00 to 2020-12-02T20:00","lastModifiedDate":"2023-09-19"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"D | 1 | return homework | Tags: #cool | 2023-11-15T08:00","lastModifiedDate":"2023-09-19"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"D | 0 | return homework | 2023-11-15T08:00","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"E | 0 | go to project meeting | 2019-10-15T18:00 to 2020-12-02T20:00","lastModifiedDate":"2023-09-19"}],"authorContributionMap":{"m1oojv":5}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"# Sam Chatbot User Guide","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"***Meet SAM, your trusty Task Manager*** 🚀","lastModifiedDate":"2023-09-19"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"**SAM** isn\u0027t your ordinary task manager; it\u0027s the Gandalf of productivity, the Sherlock Holmes of organization, and ","lastModifiedDate":"2023-09-19"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"the Mary Poppins of reminders, all rolled into one nifty app. 🎩✨","lastModifiedDate":"2023-09-19"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"With **SAM** by your side, those daunting to-do lists become thrilling quests, deadlines are no match for your ","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"ninja-like scheduling skills, and chaos turns into pure, organized magic! 🪄📅","lastModifiedDate":"2023-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"So, say farewell to the chaos, bid adieu to procrastination, and let **SAM** be your loyal companion on your journey ","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"to conquering tasks like a true hero. 🦸‍♀️","lastModifiedDate":"2023-09-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"Ready to embark on this epic adventure of productivity? Let\u0027s go! 🌟","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"![SAMDemo](../docs/Ui.png)","lastModifiedDate":"2023-09-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"## Features ","lastModifiedDate":"2023-09-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":"### Task Management","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"Task Management is at the heart of SAM\u0027s functionality. It empowers you to efficiently handle your to-dos, ","lastModifiedDate":"2023-09-19"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"events, and deadlines all in one place. With intuitive commands and a user-friendly interface, ","lastModifiedDate":"2023-09-19"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"SAM\u0027s Task Management feature ensures you stay on top of your tasks, helping you achieve productivity ","lastModifiedDate":"2023-09-19"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"like never before.","lastModifiedDate":"2023-09-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"### 1. Viewing help : `help`","lastModifiedDate":"2023-09-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":"Whenever you find yourself in need of guidance, this command is here to assist you by providing a comprehensive ","lastModifiedDate":"2023-09-19"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":"list of all available instructions.","lastModifiedDate":"2023-09-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Example of usage: ","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":"`help`","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":"- A list of all available instructions with its respective formats.","lastModifiedDate":"2023-09-19"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":"List of possible commands: ","lastModifiedDate":"2023-09-19"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":"todo: Adds a todo to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":"Example: todo borrow books","lastModifiedDate":"2023-09-19"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":"event: Adds an event to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":"Parameters: DESCRIPTION /from DATETIME /to DATETIME ","lastModifiedDate":"2023-09-19"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":"Example: event go to project meeting /from 2019-10-15 1800 /to 2020-12-2 2000","lastModifiedDate":"2023-09-19"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":"deadline: Adds a deadline to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":"Parameters: DESCRIPTION /by DATETIME ","lastModifiedDate":"2023-09-19"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":"Example: deadline return homework /by 2023-11-15 0800 ","lastModifiedDate":"2023-09-19"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":"delete: Deletes the task identified by the index number.","lastModifiedDate":"2023-09-19"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":"Example: delete 1","lastModifiedDate":"2023-09-19"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":"mark: mark the tasks identified by the index number as completed.","lastModifiedDate":"2023-09-19"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":"Example: mark1","lastModifiedDate":"2023-09-19"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":"unmark: mark the tasks identified by the index number as incomplete.","lastModifiedDate":"2023-09-19"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":"Example: unmark1","lastModifiedDate":"2023-09-19"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":"tag: tag the tasks identified by the index number with tags.","lastModifiedDate":"2023-09-19"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX #DESCRIPTION ","lastModifiedDate":"2023-09-19"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":"Example: tag 1 #fun","lastModifiedDate":"2023-09-19"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":"list: list the tasks in the task list.","lastModifiedDate":"2023-09-19"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":"Example: list","lastModifiedDate":"2023-09-19"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":"help: Shows program usage instructions.","lastModifiedDate":"2023-09-19"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":"Example: help","lastModifiedDate":"2023-09-19"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":"bye: Exits the program.","lastModifiedDate":"2023-09-19"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":"Example: bye","lastModifiedDate":"2023-09-19"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":"### 2. Making a ToDo Task: `todo n/TASKNAME`","lastModifiedDate":"2023-09-19"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":"Use this command to craft a new to-do task item effortlessly.","lastModifiedDate":"2023-09-19"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":"`todo return book`","lastModifiedDate":"2023-09-19"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-19"},{"lineNumber":94,"author":{"gitId":"m1oojv"},"content":"\t[T][ ] return book","lastModifiedDate":"2023-09-19"},{"lineNumber":95,"author":{"gitId":"m1oojv"},"content":"Now you have 1 task in the list.","lastModifiedDate":"2023-09-19"},{"lineNumber":96,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":97,"author":{"gitId":"m1oojv"},"content":"- Error Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":98,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":99,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":100,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":101,"author":{"gitId":"m1oojv"},"content":"todo: Adds a todo to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":102,"author":{"gitId":"m1oojv"},"content":"Example: todo borrow books","lastModifiedDate":"2023-09-19"},{"lineNumber":103,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":104,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":105,"author":{"gitId":"m1oojv"},"content":"### 2. Making a Deadline Task: `deadline n/TASKNAME /by DATETIME`","lastModifiedDate":"2023-09-19"},{"lineNumber":106,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":107,"author":{"gitId":"m1oojv"},"content":"Use this command to craft a new deadline task item effortlessly.","lastModifiedDate":"2023-09-19"},{"lineNumber":108,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":109,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":110,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":111,"author":{"gitId":"m1oojv"},"content":"`deadline return homework /by 2023-11-15 0800`","lastModifiedDate":"2023-09-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":113,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":114,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":116,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":117,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":118,"author":{"gitId":"m1oojv"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-19"},{"lineNumber":119,"author":{"gitId":"m1oojv"},"content":"\t[D][ ] return homework (by: Nov 15 2023 08:00 am)","lastModifiedDate":"2023-09-19"},{"lineNumber":120,"author":{"gitId":"m1oojv"},"content":"Now you have 1 task in the list.","lastModifiedDate":"2023-09-19"},{"lineNumber":121,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":122,"author":{"gitId":"m1oojv"},"content":"- Error Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":123,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":124,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":125,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":126,"author":{"gitId":"m1oojv"},"content":"deadline: Adds a deadline to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":127,"author":{"gitId":"m1oojv"},"content":"Parameters: DESCRIPTION /by DATETIME ","lastModifiedDate":"2023-09-19"},{"lineNumber":128,"author":{"gitId":"m1oojv"},"content":"Example: deadline return homework /by 2023-11-15 0800 ","lastModifiedDate":"2023-09-19"},{"lineNumber":129,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":130,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":131,"author":{"gitId":"m1oojv"},"content":"### 4. Making a Event Task: `event n/TASKNAME /from DATETIME /to DATETIME`","lastModifiedDate":"2023-09-19"},{"lineNumber":132,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":133,"author":{"gitId":"m1oojv"},"content":"Use this command to craft a new event item effortlessly.","lastModifiedDate":"2023-09-19"},{"lineNumber":134,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":135,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":136,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":137,"author":{"gitId":"m1oojv"},"content":"`event go to project meeting /from 2019-10-15 1800 /to 2020-12-2 2000`","lastModifiedDate":"2023-09-19"},{"lineNumber":138,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":139,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":140,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":141,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":142,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":143,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":144,"author":{"gitId":"m1oojv"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-19"},{"lineNumber":145,"author":{"gitId":"m1oojv"},"content":"\t[E][ ] go to project meeting (from: Oct 15 2019 06:00 pm, to: Dec 2 2020 08:00 pm)","lastModifiedDate":"2023-09-19"},{"lineNumber":146,"author":{"gitId":"m1oojv"},"content":"Now you have 5 tasks in the list.","lastModifiedDate":"2023-09-19"},{"lineNumber":147,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":148,"author":{"gitId":"m1oojv"},"content":"- Error Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":149,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":150,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":151,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":152,"author":{"gitId":"m1oojv"},"content":"event: Adds an event to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":153,"author":{"gitId":"m1oojv"},"content":"Parameters: DESCRIPTION /from DATETIME /to DATETIME ","lastModifiedDate":"2023-09-19"},{"lineNumber":154,"author":{"gitId":"m1oojv"},"content":"Example: event go to project meeting /from 2019-10-15 1800 /to 2020-12-2 2000","lastModifiedDate":"2023-09-19"},{"lineNumber":155,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":156,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":157,"author":{"gitId":"m1oojv"},"content":"### 5. Delete Task: `delete n/INDEX`","lastModifiedDate":"2023-09-19"},{"lineNumber":158,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":159,"author":{"gitId":"m1oojv"},"content":"When it\u0027s time to bid farewell to a task, simply use this command with the task\u0027s index to delete it from your list.","lastModifiedDate":"2023-09-19"},{"lineNumber":160,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":161,"author":{"gitId":"m1oojv"},"content":"**Warning:**","lastModifiedDate":"2023-09-19"},{"lineNumber":162,"author":{"gitId":"m1oojv"},"content":"Potentially Dangerous Operation! Deleting a task is irreversible and cannot be undone.","lastModifiedDate":"2023-09-19"},{"lineNumber":163,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":164,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":165,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":166,"author":{"gitId":"m1oojv"},"content":"`delete 2`","lastModifiedDate":"2023-09-19"},{"lineNumber":167,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":168,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":169,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":170,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":171,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":172,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":173,"author":{"gitId":"m1oojv"},"content":"Noted. I\u0027ve removed this task:","lastModifiedDate":"2023-09-19"},{"lineNumber":174,"author":{"gitId":"m1oojv"},"content":"\t[T][ ] return book","lastModifiedDate":"2023-09-19"},{"lineNumber":175,"author":{"gitId":"m1oojv"},"content":"Now you have 3 tasks in the list.","lastModifiedDate":"2023-09-19"},{"lineNumber":176,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":177,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong index number:","lastModifiedDate":"2023-09-19"},{"lineNumber":178,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":179,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":180,"author":{"gitId":"m1oojv"},"content":"Invalid task index.","lastModifiedDate":"2023-09-19"},{"lineNumber":181,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":182,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong command format:","lastModifiedDate":"2023-09-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":184,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":185,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":186,"author":{"gitId":"m1oojv"},"content":"delete: Deletes the task identified by the index number.","lastModifiedDate":"2023-09-19"},{"lineNumber":187,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":188,"author":{"gitId":"m1oojv"},"content":"Example: delete 1","lastModifiedDate":"2023-09-19"},{"lineNumber":189,"author":{"gitId":"m1oojv"},"content":"Could not find index number to parse","lastModifiedDate":"2023-09-19"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":191,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":192,"author":{"gitId":"m1oojv"},"content":"### 6. Completing a Task: `mark n/INDEX`","lastModifiedDate":"2023-09-19"},{"lineNumber":193,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":194,"author":{"gitId":"m1oojv"},"content":"To mark a task as done, simply use this command with the task\u0027s index.","lastModifiedDate":"2023-09-19"},{"lineNumber":195,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":196,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":197,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":198,"author":{"gitId":"m1oojv"},"content":"`mark 2`","lastModifiedDate":"2023-09-19"},{"lineNumber":199,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":200,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":201,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":202,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":203,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":204,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":205,"author":{"gitId":"m1oojv"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-19"},{"lineNumber":206,"author":{"gitId":"m1oojv"},"content":"\t[D][X] return homework (by: Nov 15 2023 08:00 am)","lastModifiedDate":"2023-09-19"},{"lineNumber":207,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":208,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong index number:","lastModifiedDate":"2023-09-19"},{"lineNumber":209,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":210,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":211,"author":{"gitId":"m1oojv"},"content":"Invalid task index.","lastModifiedDate":"2023-09-19"},{"lineNumber":212,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":213,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong command format:","lastModifiedDate":"2023-09-19"},{"lineNumber":214,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":215,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":216,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":217,"author":{"gitId":"m1oojv"},"content":"mark: mark the tasks identified by the index number as completed.","lastModifiedDate":"2023-09-19"},{"lineNumber":218,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":219,"author":{"gitId":"m1oojv"},"content":"Example: mark 1","lastModifiedDate":"2023-09-19"},{"lineNumber":220,"author":{"gitId":"m1oojv"},"content":"Could not find index number to parse","lastModifiedDate":"2023-09-19"},{"lineNumber":221,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":222,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":223,"author":{"gitId":"m1oojv"},"content":"### 7. Reversing Task Completion: `unmark n/INDEX`","lastModifiedDate":"2023-09-19"},{"lineNumber":224,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":225,"author":{"gitId":"m1oojv"},"content":"To mark a task as not done or incomplete, utilize this command with the task\u0027s index.","lastModifiedDate":"2023-09-19"},{"lineNumber":226,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":227,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":228,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":229,"author":{"gitId":"m1oojv"},"content":"`unmark 2`","lastModifiedDate":"2023-09-19"},{"lineNumber":230,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":231,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":232,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":233,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":234,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":235,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":236,"author":{"gitId":"m1oojv"},"content":"OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-09-19"},{"lineNumber":237,"author":{"gitId":"m1oojv"},"content":"\t[D][ ] return homework (by: Nov 15 2023 08:00 am)","lastModifiedDate":"2023-09-19"},{"lineNumber":238,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":239,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong index number:","lastModifiedDate":"2023-09-19"},{"lineNumber":240,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":241,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":242,"author":{"gitId":"m1oojv"},"content":"Invalid task index.","lastModifiedDate":"2023-09-19"},{"lineNumber":243,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":244,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong command format:","lastModifiedDate":"2023-09-19"},{"lineNumber":245,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":246,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":247,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":248,"author":{"gitId":"m1oojv"},"content":"unmark: mark the tasks identified by the index number as incomplete.","lastModifiedDate":"2023-09-19"},{"lineNumber":249,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":250,"author":{"gitId":"m1oojv"},"content":"Example: unmark 1","lastModifiedDate":"2023-09-19"},{"lineNumber":251,"author":{"gitId":"m1oojv"},"content":"Could not find index number to parse","lastModifiedDate":"2023-09-19"},{"lineNumber":252,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":253,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":254,"author":{"gitId":"m1oojv"},"content":"### 8. Tagging a task: `tag n/INDEX n/#TAGNAME`","lastModifiedDate":"2023-09-19"},{"lineNumber":255,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":256,"author":{"gitId":"m1oojv"},"content":"Easily add tags to your tasks by using this command with the desired tag name.","lastModifiedDate":"2023-09-19"},{"lineNumber":257,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":258,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":259,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":260,"author":{"gitId":"m1oojv"},"content":"`tag 2 #cool`","lastModifiedDate":"2023-09-19"},{"lineNumber":261,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":262,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":263,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":264,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":265,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":266,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":267,"author":{"gitId":"m1oojv"},"content":"Nice! I\u0027ve tagged this task:","lastModifiedDate":"2023-09-19"},{"lineNumber":268,"author":{"gitId":"m1oojv"},"content":"\t[D][X] return homework #cool (by: Nov 15 2023 08:00 am)","lastModifiedDate":"2023-09-19"},{"lineNumber":269,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":270,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong index number:","lastModifiedDate":"2023-09-19"},{"lineNumber":271,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":272,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":273,"author":{"gitId":"m1oojv"},"content":"Invalid task index.","lastModifiedDate":"2023-09-19"},{"lineNumber":274,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":275,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong command format:","lastModifiedDate":"2023-09-19"},{"lineNumber":276,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":277,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":278,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":279,"author":{"gitId":"m1oojv"},"content":"tag: tag the tasks identified by the index number with tags.","lastModifiedDate":"2023-09-19"},{"lineNumber":280,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX #DESCRIPTION ","lastModifiedDate":"2023-09-19"},{"lineNumber":281,"author":{"gitId":"m1oojv"},"content":"Example: tag 1 #fun","lastModifiedDate":"2023-09-19"},{"lineNumber":282,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":283,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":284,"author":{"gitId":"m1oojv"},"content":"### 9. Listing All Tasks: `list`","lastModifiedDate":"2023-09-19"},{"lineNumber":285,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":286,"author":{"gitId":"m1oojv"},"content":"View all your tasks in one comprehensive list with this straightforward command.","lastModifiedDate":"2023-09-19"},{"lineNumber":287,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":288,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":289,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":290,"author":{"gitId":"m1oojv"},"content":"`list`","lastModifiedDate":"2023-09-19"},{"lineNumber":291,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":292,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":293,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":294,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":295,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":296,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":297,"author":{"gitId":"m1oojv"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-19"},{"lineNumber":298,"author":{"gitId":"m1oojv"},"content":"\t1.[T][ ] zoo #fun #grr ","lastModifiedDate":"2023-09-19"},{"lineNumber":299,"author":{"gitId":"m1oojv"},"content":"\t2.[E][X] go to projecting #notfun (from: Oct 15 2019 06:00 pm, to: Dec 2 2020 08:00 pm)","lastModifiedDate":"2023-09-19"},{"lineNumber":300,"author":{"gitId":"m1oojv"},"content":"\t3.[D][X] return homework #cool (by: Nov 15 2023 08:00 am)","lastModifiedDate":"2023-09-19"},{"lineNumber":301,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":302,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":303,"author":{"gitId":"m1oojv"},"content":"### 10. End Program: `bye`","lastModifiedDate":"2023-09-19"},{"lineNumber":304,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":305,"author":{"gitId":"m1oojv"},"content":"View all your tasks in one comprehensive list with this straightforward command.","lastModifiedDate":"2023-09-19"},{"lineNumber":306,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":307,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":308,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":309,"author":{"gitId":"m1oojv"},"content":"`bye`","lastModifiedDate":"2023-09-19"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":311,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":313,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":315,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":316,"author":{"gitId":"m1oojv"},"content":"Bye. Hope to see you again soon!","lastModifiedDate":"2023-09-19"},{"lineNumber":317,"author":{"gitId":"m1oojv"},"content":"Remember, the universe is vast, but I\u0027m always here for you :D","lastModifiedDate":"2023-09-19"},{"lineNumber":318,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":319,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"}],"authorContributionMap":{"m1oojv":294,"-":25}},{"path":"src/main/java/sam/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"public class Launcher {","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":12}},{"path":"src/main/java/sam/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import sam.gui.MainWindow;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" private Sam sam \u003d new Sam();","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setSam(sam, stage);","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" stage.show();","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":32}},{"path":"src/main/java/sam/Sam.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.commands.Command;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.commands.CommandResult;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.services.parser.Parser;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"public class Sam {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" private final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" private Storage storage;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" private Ui ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" private Parser parser;","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public Sam() {","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" this.storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" storage.loadTasksFromFile(this.taskList);","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" public CommandResult getResult(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" Command c \u003d parser.parseCommand(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" if (c.isExit()) {","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" return null;","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" return c.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":37}},{"path":"src/main/java/sam/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" * Adds a deadline to the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a deadline to the task list. \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: DESCRIPTION /by DATETIME \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" + \" return homework /by 2023-11-15 0800 \";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" Task deadline \u003d new Deadline(this.description, this.by);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.ADD_TASKS, \"\\t\" + deadline, tasks.getTaskCountSummary());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.ADD_TASKS, \"\\t\" + deadline, tasks.getTaskCountSummary());","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":48}},{"path":"src/main/java/sam/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" * Adds an event to the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds an event to the task list. \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: DESCRIPTION /from DATETIME /to DATETIME \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" + \" go to project meeting /from 2019-10-15 1800 /to 2020-12-2 2000\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" public AddEventCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" Task event \u003d new Event(this.description, this.from, this.to);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.ADD_TASKS, \"\\t\" + event, tasks.getTaskCountSummary());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.ADD_TASKS, \"\\t\" + event, tasks.getTaskCountSummary());","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":49}},{"path":"src/main/java/sam/commands/AddTagCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-09-19"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" * Mark a task as done from the task list.","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"public class AddTagCommand extends Command {","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"tag\";","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" + \": tag the tasks identified by the index number with tags.\\n\"","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: INDEX #DESCRIPTION \\n\"","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 #fun\";","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" private Integer index;","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" private String description;","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public AddTagCommand(Integer index, String description) {","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" tasks.addTagToTask(index, description);","lastModifiedDate":"2023-09-19"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.TAG_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.TAG_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-19"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-19"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"m1oojv":45}},{"path":"src/main/java/sam/commands/AddToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" * Adds a ToDo to the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"public class AddToDoCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a todo to the task list. \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" + \" borrow books\";","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public AddToDoCommand(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" Task todo \u003d new ToDo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.ADD_TASKS, \"\\t\" + todo, tasks.getTaskCountSummary());","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.ADD_TASKS, \"\\t\" + todo, tasks.getTaskCountSummary());","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":43}},{"path":"src/main/java/sam/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" * Represents an executable command.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" * Based on AddressBook2","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" * @return the result of the command.","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public abstract CommandResult execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" * Returns that it is the end of the conversation.","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" * @return boolean of whether it is an Exit Command.","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" return this instanceof ExitCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":28}},{"path":"src/main/java/sam/commands/CommandResult.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":" * Based on AddressBook2","lastModifiedDate":"2023-09-19"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"public class CommandResult {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" /** The feedback message to be shown to the user. Contains a description of the execution result */","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" public final String feedbackToUser;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public CommandResult(String... args) {","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" for (String arg : args) {","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(arg).append(\"\\n\");","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" this.feedbackToUser \u003d stringBuilder.toString();","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" * Returns message relevant to the command result, if any.","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public String getFeedback() {","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" return this.feedbackToUser;","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":27}},{"path":"src/main/java/sam/commands/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" + \": Deletes the task identified by the index number.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" private Integer index;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public DeleteTaskCommand(Integer index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" Task removedTask \u003d tasks.deleteTask(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.DELETE_TASK, \"\\t\" + removedTask, tasks.getTaskCountSummary());","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.DELETE_TASK, \"\\t\" + removedTask, tasks.getTaskCountSummary());","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":44}},{"path":"src/main/java/sam/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" * Exits the program.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Exits the program.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" public ExitCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" ui.shutDown();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.BYE);","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":25}},{"path":"src/main/java/sam/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" * List all tasks from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" + \": find similar tasks in the task list.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD + \" book\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" private String search;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public FindCommand(String search) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" this.search \u003d search;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" TaskList list \u003d tasks.findTasks(search);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.SEARCH_TASK_SUCCESS, list.listTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.SEARCH_TASK_SUCCESS, list.listTasks());","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand( e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":36}},{"path":"src/main/java/sam/commands/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" * Shows help instructions.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" * Based on AddressBook2","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public static final String ALL_COMMAND_USAGES \u003d \"List of possible commands: \\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + AddToDoCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + AddEventCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + AddDeadlineCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + DeleteTaskCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + MarkTaskCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + UnmarkTaskCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + AddTagCommand.MESSAGE_USAGE","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + ListCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + HelpCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + ExitCommand.MESSAGE_USAGE;","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(ALL_COMMAND_USAGES);","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(ALL_COMMAND_USAGES);","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":36}},{"path":"src/main/java/sam/commands/IncorrectCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" * Represents an incorrect command.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"public class IncorrectCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public final String feedbackToUser;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" public IncorrectCommand(String feedbackToUser) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" this.feedbackToUser \u003d feedbackToUser;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(feedbackToUser);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.ERROR, \" \" + feedbackToUser);","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":23}},{"path":"src/main/java/sam/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" * List all tasks from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" + \": list the tasks in the task list.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public ListCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" String list \u003d tasks.listTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.LIST_TASKS, list);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.LIST_TASKS, list);","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":34}},{"path":"src/main/java/sam/commands/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" * Mark a task as done from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" + \": mark the tasks identified by the index number as completed.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" private Integer index;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public MarkTaskCommand(Integer index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" tasks.markTaskAsDone(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.MARK_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.MARK_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":43}},{"path":"src/main/java/sam/commands/UnmarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" * Mark a task as not done from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" + \": mark the tasks identified by the index number as incomplete.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" private Integer index;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public UnmarkTaskCommand(Integer index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" tasks.markTaskAsNotDone(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.UNMARK_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.UNMARK_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":44}},{"path":"src/main/java/sam/constants/Message.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.constants;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":" * Container for user visible messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"public class Message {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"// Message for Start","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" public static final String WELCOME \u003d \"Hello! I\u0027m Sam, your personal AI chatbot, ready to serve you today\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" \"What can I do for you?\";","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"// Messages for response to commands","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public static final String BYE \u003d \"Bye. Hope to see you again soon!\\nRemember, the universe is vast, but \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" \"I\u0027m always here for you :D\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String LIST_TASKS \u003d \"Here are the tasks in your list:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" public static final String ADD_TASKS \u003d \"Got it. I\u0027ve added this task:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public static final String MARK_TASK \u003d \"Nice! I\u0027ve marked this task as done:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public static final String TAG_TASK \u003d \"Nice! I\u0027ve tagged this task:\";","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public static final String DELETE_TASK \u003d \"Noted. I\u0027ve removed this task:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public static final String UNMARK_TASK \u003d \"OK, I\u0027ve marked this task as not done yet:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"// Messages for errors","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public static final String ERROR \u003d \"☹ OOPS!!!\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public static final String TASK_LIST_EMPTY \u003d \"The task list is empty.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" public static final String TASK_LIST_INVALID_INDEX \u003d \"Invalid task index.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" public static final String INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" public static final String CORRUPTED_FILE_ERROR \u003d \"Saved data not found due to corruption. \\n Corrupted task : \";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" public static final String FAILED_TO_SAVE \u003d \"Failed to save \";","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" public static final String SEARCH_TASK_SUCCESS \u003d \"Here are the matching tasks in your list:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" public static final String TASK_NOT_FOUND \u003d \"No tasks found.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":32}},{"path":"src/main/java/sam/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":" * Signals an error caused by command.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":10}},{"path":"src/main/java/sam/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.gui;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" private Label dialog;","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" private void flip() {","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-06"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-06"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" public static DialogBox getSamDialog(String text, Image img) {","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" db.flip();","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" return db;","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":61}},{"path":"src/main/java/sam/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.gui;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import sam.Sam;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"import sam.commands.CommandResult;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" private Stage stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" private Sam sam;","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" private final Image USER_IMAGE \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.png\"));","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" private final Image SAM_IMAGE \u003d new Image(this.getClass().getResourceAsStream(\"/images/sam.gif\"));","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" public void initialize() {","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" DialogBox.getSamDialog(Message.WELCOME, SAM_IMAGE)","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" public void setSam(Sam d, Stage stage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" this.sam \u003d d;","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" this.stage \u003d stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-06"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-06"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" CommandResult result \u003d null;","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" String response \u003d null;","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" result \u003d sam.getResult(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" response \u003d result.getFeedback();","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" response \u003d e.getMessage();","lastModifiedDate":"2023-09-06"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" } finally {","lastModifiedDate":"2023-09-06"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" assert response !\u003d null : \"No response message returned from Sam\";","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" userInput.clear();","lastModifiedDate":"2023-09-06"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" if (result \u003d\u003d null) {","lastModifiedDate":"2023-09-06"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-06"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" DialogBox.getUserDialog(input, USER_IMAGE)","lastModifiedDate":"2023-09-06"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-09-06"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" handleExit();","lastModifiedDate":"2023-09-06"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" return;","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-06"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" DialogBox.getUserDialog(input, USER_IMAGE),","lastModifiedDate":"2023-09-06"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" DialogBox.getSamDialog(response, SAM_IMAGE)","lastModifiedDate":"2023-09-06"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-09-06"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":" * Closes the application.","lastModifiedDate":"2023-09-06"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" private void handleExit() {","lastModifiedDate":"2023-09-06"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-06"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" DialogBox.getSamDialog(Message.BYE, SAM_IMAGE)","lastModifiedDate":"2023-09-06"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-09-06"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" PauseTransition delay \u003d new PauseTransition(Duration.seconds(3));","lastModifiedDate":"2023-09-06"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" delay.setOnFinished(event -\u003e this.stage.close());","lastModifiedDate":"2023-09-06"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" delay.play();","lastModifiedDate":"2023-09-06"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":91}},{"path":"src/main/java/sam/services/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.parser.FileParser;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" * Represents the hard disk used to store task list data.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" private String path;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public Storage(String path) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" this.path \u003d path;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" * Ensure that the hard disk is present in the file directory.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" * Creates the file if not found.","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" * @return the new file created","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" private File createHardDisk() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" File file \u003d new File(this.path);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" assert file.getParentFile().exists() : \"Directory cannot be found\";","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" return file;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" * Saves the {@code taskList} data to the storage file.","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" * @throws IOException if there were errors converting and/or storing data to file.","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" public void saveTasksToFile(TaskList tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" File file \u003d createHardDisk();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" for (Task task : tasks.getTasks()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" assert file.exists() : \"Hard disk file is not created\";","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" * Loads the {@code taskList} data from this storage file into the TaskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" * @throws IOException if there were errors reading and/or converting data from file.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" public void loadTasksFromFile(TaskList tasks) throws IOException, DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" File file \u003d createHardDisk();","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" List\u003cString\u003e list \u003d Files.readAllLines(file.toPath());","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" for (String taskString : list) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" Task task \u003d FileParser.parseTaskFromString(taskString);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":71}},{"path":"src/main/java/sam/services/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" * Represents the entire task list. Contains the data of the tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" * Creates an empty task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" * Return a copy of the entire taskList.","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" * @return a copy of the taskList.","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" return new ArrayList\u003c\u003e(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" * Provide size of task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" * @return the size of the taskList","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" public Integer getSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" return tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" * Add task to task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" * @param task the new task created","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" * Gets specific tasks according to their index number in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" * @param index the index number of the task in the task list","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" * @return the task requested","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" public Task getTask(Integer index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" * Provides the task list in a list format.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" * @return the taskList string","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" public String listTasks() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_LIST_EMPTY);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" sb.append(\"\\t\");","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" sb.append(i + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" sb.append(\".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" sb.append(tasks.get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" return sb.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":" * Mark a specific task as done according to their index number in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" * @param index the index number of the task in the task list","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" public void markTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_LIST_INVALID_INDEX);","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" * Mark a specific task as not done according to their index number in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"m1oojv"},"content":" * @param index the index number of the task in the task list","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"m1oojv"},"content":" public void markTaskAsNotDone(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"m1oojv"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_LIST_INVALID_INDEX);","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"m1oojv"},"content":" tasks.get(index).markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":104,"author":{"gitId":"m1oojv"},"content":" * Mark a specific task as done according to their index number in the task list.","lastModifiedDate":"2023-09-19"},{"lineNumber":105,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":106,"author":{"gitId":"m1oojv"},"content":" * @param index the index number of the task in the task list","lastModifiedDate":"2023-09-19"},{"lineNumber":107,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":108,"author":{"gitId":"m1oojv"},"content":" public void addTagToTask(int index, String description) throws DukeException {","lastModifiedDate":"2023-09-19"},{"lineNumber":109,"author":{"gitId":"m1oojv"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-09-19"},{"lineNumber":110,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_LIST_INVALID_INDEX);","lastModifiedDate":"2023-09-19"},{"lineNumber":111,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":112,"author":{"gitId":"m1oojv"},"content":" tasks.get(index).addTag(description);","lastModifiedDate":"2023-09-19"},{"lineNumber":113,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":114,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"m1oojv"},"content":" * Delete a specific task according to their index number in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"m1oojv"},"content":" * @param index the index number of the task in the task list","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"m1oojv"},"content":" public Task deleteTask(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"m1oojv"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_LIST_INVALID_INDEX);","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"m1oojv"},"content":" return tasks.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"m1oojv"},"content":" * Prints the total number of tasks left in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"m1oojv"},"content":" * @return the total number of tasks left in the list","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"m1oojv"},"content":" public String getTaskCountSummary() {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"m1oojv"},"content":" int size \u003d tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"m1oojv"},"content":" if (size \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"m1oojv"},"content":" return (\"Now you have \" + size + \" task in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"m1oojv"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"m1oojv"},"content":" return (\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"m1oojv"},"content":" * Search for similar tasks in task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"m1oojv"},"content":" * @param word user input for search","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"m1oojv"},"content":" * @return Task list of similar tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"m1oojv"},"content":" public TaskList findTasks(String word) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"m1oojv"},"content":" TaskList tasksFound \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"m1oojv"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"m1oojv"},"content":" if (t.getDescription().contains(word)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"m1oojv"},"content":" tasksFound.addTask(t);","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"m1oojv"},"content":" if (tasksFound.getSize() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_NOT_FOUND);","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"m1oojv"},"content":" return tasksFound;","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":159}},{"path":"src/main/java/sam/services/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" * Text UI of the application.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" private final Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" * Reads the user\u0027s input.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" * Generates and prints the divider.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" public void showLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" System.out.println(\"______________________________________________________\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" \"______\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" * Generates and prints the message with dividers.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" * @param args full result args string","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" public void printMessage(String... args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" for (String arg : args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" System.out.printf(arg + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" * Generates and prints the ending message upon the end of the application.","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" public void shutDown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" this.printMessage(Message.BYE);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" * Generates and prints the welcome message upon the start of the application.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" this.printMessage(Message.WELCOME);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" * Generates and prints the error message upon each error faced(if any).","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" * @param error the error message from the exception","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" public void showError(String error) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" this.printMessage(Message.ERROR + \" \" + error);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":69}},{"path":"src/main/java/sam/services/parser/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" * Converts date and time to a standard format (MMM dd yyyy hh:mm a).","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"public class DateTimeParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" private static List\u003cDateTimeFormatter\u003e dateFormatters \u003d Arrays.asList(","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d\")","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" private static List\u003cDateTimeFormatter\u003e dateTimeFormatters \u003d Arrays.asList(","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy HHmm\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d HHmm\")","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" public static LocalDateTime parseDate(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" for (DateTimeFormatter formatter : dateTimeFormatters) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" return LocalDateTime.parse(input, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" // Try the next formatter if parsing fails","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" for (DateTimeFormatter formatter : dateFormatters) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" return LocalDateTime.of(LocalDate.parse(input, formatter), LocalTime.MIDNIGHT);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" // Try the next formatter if parsing fails","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" throw new IllegalArgumentException(\"Invalid date format: \" + input);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":46}},{"path":"src/main/java/sam/services/parser/FileParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import java.util.List;","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" * Converts saved data from hard disk into current TaskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"public class FileParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public static Task parseTaskFromString(String line) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" String[] parts \u003d line.split(\"\\\\s*\\\\|\\\\s*\"); // Split using the delimiter \"|\"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" String taskType \u003d parts[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" String status \u003d parts[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" if (!status.equals(\"0\") \u0026\u0026 !status.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.CORRUPTED_FILE_ERROR + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" boolean isDone \u003d status.equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" String taskDescription \u003d parts[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" List\u003cString\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" String additionalInfo;","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" if (parts.length \u003e 3 \u0026\u0026 parts[3].trim().startsWith(\"Tags:\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" tags \u003d extractTags(parts[3].trim());","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" additionalInfo \u003d parts.length \u003e 4 ? parts[4].trim() : null;","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" } else {","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" additionalInfo \u003d parts.length \u003e 3 ? parts[3].trim() : null;","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" ToDo todo \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" todo.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" todo.addTags(tags);","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" return todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" if (additionalInfo \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.CORRUPTED_FILE_ERROR + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" LocalDateTime by \u003d LocalDateTime.parse(additionalInfo);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" Deadline deadline \u003d new Deadline(taskDescription, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" deadline.addTags(tags);","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" return deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" if (additionalInfo \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.CORRUPTED_FILE_ERROR + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" String[] eventParts \u003d additionalInfo.split(\" to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" if (eventParts.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.CORRUPTED_FILE_ERROR + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" LocalDateTime from \u003d LocalDateTime.parse(eventParts[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" LocalDateTime to \u003d LocalDateTime.parse(eventParts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" Event event \u003d new Event(taskDescription, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" event.addTags(tags);","lastModifiedDate":"2023-09-12"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" return event;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" assert false: \"Invalid Task Type saved in Hard disk.\";","lastModifiedDate":"2023-09-12"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" // Helper method to extract tags from the additionalInfo string","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" private static List\u003cString\u003e extractTags(String additionalInfo) {","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" List\u003cString\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" if (additionalInfo !\u003d null \u0026\u0026 additionalInfo.contains(\"Tags:\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" String[] tagParts \u003d additionalInfo.split(\"Tags:\");","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" if (tagParts.length \u003e 1) {","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" String[] tagArray \u003d tagParts[1].trim().split(\"\\\\s+\");","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" tags.addAll(Arrays.asList(tagArray));","lastModifiedDate":"2023-09-12"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" return tags;","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":93}},{"path":"src/main/java/sam/services/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddEventCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.commands.HelpCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.commands.IncorrectCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddDeadlineCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddToDoCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import sam.commands.DeleteTaskCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import sam.commands.MarkTaskCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import sam.commands.UnmarkTaskCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"import sam.commands.ListCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import sam.commands.FindCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"import sam.commands.ExitCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddTagCommand;","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"import static sam.constants.Message.INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"import static sam.services.parser.TaskParser.prepareAddDeadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"import static sam.services.parser.TaskParser.prepareAddEvent;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"import static sam.services.parser.TaskParser.prepareAddTodo;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":"import static sam.services.parser.TaskParser.prepareFind;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" * Parses user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" * Based on AddressBook2","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" public static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" * @param userInput full user input string","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" * @return the command based on the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" switch (commandWord) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" case AddTagCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" return prepareTag(arguments);","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" case AddEventCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" return prepareAddEvent(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" case AddDeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" return prepareAddDeadline(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" case AddToDoCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" return prepareAddTodo(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" return prepareDelete(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" case MarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" return prepareMark(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" case UnmarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" return prepareUnmark(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" return prepareFind(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" case HelpCommand.COMMAND_WORD: // Fallthrough","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" return new HelpCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the add tags to task command.","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"m1oojv"},"content":" private Command prepareTag(String args) {","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"m1oojv"},"content":" final Pattern TAG_PATTERN \u003d Pattern.compile(\"(?\u003cindex\u003e\\\\d+)\\\\s+(?\u003cdescription\u003e#\\\\w+)\");","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d TAG_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-12"},{"lineNumber":99,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, AddTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-09-12"},{"lineNumber":102,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":103,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":104,"author":{"gitId":"m1oojv"},"content":" String index \u003d matcher.group(\"index\").trim();","lastModifiedDate":"2023-09-12"},{"lineNumber":105,"author":{"gitId":"m1oojv"},"content":" String description \u003d matcher.group(\"description\").trim();","lastModifiedDate":"2023-09-12"},{"lineNumber":106,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-12"},{"lineNumber":107,"author":{"gitId":"m1oojv"},"content":" final int targetIndex \u003d parseArgsAsDisplayedIndex(index);","lastModifiedDate":"2023-09-12"},{"lineNumber":108,"author":{"gitId":"m1oojv"},"content":" return new AddTagCommand(targetIndex, description );","lastModifiedDate":"2023-09-12"},{"lineNumber":109,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException pe) {","lastModifiedDate":"2023-09-12"},{"lineNumber":110,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT + \"\\n\" + pe.getMessage(),","lastModifiedDate":"2023-09-12"},{"lineNumber":111,"author":{"gitId":"m1oojv"},"content":" AddTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":114,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":115,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the delete task command.","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"m1oojv"},"content":" private Command prepareDelete(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"m1oojv"},"content":" final int targetIndex \u003d parseArgsAsDisplayedIndex(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"m1oojv"},"content":" return new DeleteTaskCommand(targetIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException pe) {","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT + \"\\n\" + pe.getMessage(),","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"m1oojv"},"content":" DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the mark task as done command.","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"m1oojv"},"content":" private Command prepareMark(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"m1oojv"},"content":" final int targetIndex \u003d parseArgsAsDisplayedIndex(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"m1oojv"},"content":" return new MarkTaskCommand(targetIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException pe) {","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT + \"\\n\" + pe.getMessage(),","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"m1oojv"},"content":" MarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the mark task as not done command.","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"m1oojv"},"content":" private Command prepareUnmark(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"m1oojv"},"content":" final int targetIndex \u003d parseArgsAsDisplayedIndex(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"m1oojv"},"content":" return new UnmarkTaskCommand(targetIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException pe) {","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT + \"\\n\" + pe.getMessage(),","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"m1oojv"},"content":" UnmarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"m1oojv"},"content":" * Parses the given arguments string as a single index number.","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"m1oojv"},"content":" * @param args arguments string to parse as index number","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"m1oojv"},"content":" * @return the parsed index number","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"m1oojv"},"content":" * @throws DukeException if no region of the args string could be found for the index","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"m1oojv"},"content":" private int parseArgsAsDisplayedIndex(String args) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"m1oojv"},"content":" final Pattern TASK_INDEX_PATTERN \u003d Pattern.compile(\"(?\u003cindex\u003e\\\\d+)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d TASK_INDEX_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(\"Could not find index number to parse\");","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"m1oojv"},"content":" return Integer.parseInt(matcher.group(\"index\")) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"m1oojv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(\"Could not parse index number\");","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":185}},{"path":"src/main/java/sam/services/parser/TaskParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddDeadlineCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddToDoCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.commands.IncorrectCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.commands.FindCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddEventCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import static sam.constants.Message.INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"public class TaskParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the add todo task command.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public static Command prepareAddTodo(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" final Pattern TODO_TASK_PATTERN \u003d Pattern.compile(\"(?\u003cdescription\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d TODO_TASK_PATTERN.matcher(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" // Validate arg string format","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, AddToDoCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" String description \u003d matcher.group(\"description\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, AddToDoCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" return new AddToDoCommand(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the add deadline task command.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" public static Command prepareAddDeadline(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" final Pattern DEADLINE_TASK_PATTERN \u003d Pattern.compile(\"(?\u003cdescription\u003e.*) /by (?\u003cby\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d DEADLINE_TASK_PATTERN.matcher(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" // Validate arg string format","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, AddDeadlineCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" String description \u003d matcher.group(\"description\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" String by \u003d matcher.group(\"by\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" return new AddDeadlineCommand(description, DateTimeParser.parseDate(by));","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the add event task command.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" public static Command prepareAddEvent(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" final Pattern EVENT_TASK_PATTERN \u003d Pattern.compile(\"(?\u003cdescription\u003e.*) /from (?\u003cfrom\u003e.*) /to (?\u003cto\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d EVENT_TASK_PATTERN.matcher(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" // Validate arg string format","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, AddEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" String description \u003d matcher.group(\"description\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" String from \u003d matcher.group(\"from\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" String to \u003d matcher.group(\"to\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" return new AddEventCommand(description, DateTimeParser.parseDate(from), DateTimeParser.parseDate(to));","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the find task command.","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":" public static Command prepareFind(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" final Pattern FIND_TASK_PATTERN \u003d Pattern.compile(\"(?\u003ckeyword\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d FIND_TASK_PATTERN.matcher(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" // Validate arg string format","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" String keyword \u003d matcher.group(\"keyword\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" if (keyword.equals(\"\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" return new FindCommand(keyword);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":93}},{"path":"src/main/java/sam/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" * Represents a Deadline in the Task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" return \"D \" + super.toFileString() + \" | \" + this.by;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":27}},{"path":"src/main/java/sam/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" * Represents an Event in the Task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" return \"[E]\" + super.toString() + \" (from: \"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\")) + \", to: \"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" return \"E \" + super.toFileString() + \" | \" + this.from + \" to \" + this.to;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":30}},{"path":"src/main/java/sam/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import java.util.List;","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" * Represents a Task.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"public class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" protected String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" protected List\u003cString\u003e tags;","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" this.tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" * Adds a tag to the task.","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" * @param tag The tag to add (e.g., \"#fun\").","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" public void addTag(String tag) {","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" tags.add(tag);","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" * Adds a list of tags to the task.","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" * @param newTags The list of tags to add (e.g., [\"#fun\", \"#important\"]).","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" public void addTags(List\u003cString\u003e newTags) {","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" tags.addAll(newTags);","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" * Represents the task\u0027s status when printing.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(\"[\").append(getStatusIcon()).append(\"] \").append(this.description);","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" // Append tags, if any","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" if (!tags.isEmpty()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(\" \");","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" for (String tag : tags) {","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(tag).append(\" \");","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-12"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" * Represents the task\u0027s encoded format in the hard disk.","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-12"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(\"| \").append(this.isDone ? \"1\" : \"0\").append(\" | \").append(this.description);","lastModifiedDate":"2023-09-12"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":" // Append tags, if any","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" if (!tags.isEmpty()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(\" | Tags: \");","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" for (String tag : tags) {","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(tag).append(\" \");","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-12"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":90}},{"path":"src/main/java/sam/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":" * Represents a ToDo in the Task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" return \"T \" + super.toFileString();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":20}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" prefWidth\u003d\"600.0\" prefHeight\u003d\"600.0\" type\u003d\"javafx.scene.layout.HBox\"","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":18}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"800.0\" prefWidth\u003d\"600.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"sam.gui.MainWindow\"\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"758.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"524.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"524.0\" layoutY\u003d\"758.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"757.0\" prefWidth\u003d\"600.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"752.0\" prefWidth\u003d\"588.0\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":19}},{"path":"src/test/java/sam/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public void toString_savedInTaskList_correctFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" Deadline deadline \u003d new Deadline(\"Return books\", LocalDateTime.of(2023, 11,","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" 15, 8, 0));","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" assertEquals(deadline.toString(), \"[D][ ] Return books (by: Nov 15 2023 08:00 am)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public void toFileString_savedInHardDisk_correctFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" Deadline deadline \u003d new Deadline(\"Return books\", LocalDateTime.of(2023, 11,","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" 15, 8, 0));","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" assertEquals(deadline.toFileString(), \"D | 0 | Return books | 2023-11-15T08:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" public void markTask_toString_savedInTaskList_correctFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" Deadline deadline \u003d new Deadline(\"Return books\", LocalDateTime.of(2023, 11,","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" 15, 8, 0));","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" assertEquals(deadline.toString(), \"[D][X] Return books (by: Nov 15 2023 08:00 am)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" public void markTask_toFileString_savedInHardDisk_correctFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" Deadline deadline \u003d new Deadline(\"Return books\", LocalDateTime.of(2023, 11,","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" 15, 8, 0));","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" assertEquals(deadline.toFileString(), \"D | 1 | Return books | 2023-11-15T08:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":40}},{"path":"src/test/java/sam/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import org.junit.jupiter.api.AfterAll;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import sam.services.parser.DateTimeParser;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" private TaskList validTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" private static final String TEST_FILE_VALID \u003d \"testdata/valid.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" private static final String TEST_FILE_TEST \u003d \"testdata/test.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" @BeforeEach","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" public void setUp() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" validTasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" validTasks.addTask(new ToDo(\"go to zoo\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" validTasks.addTask(new Deadline(\"submit assignment\", DateTimeParser.parseDate(\"2023-11-15 0800\")));","lastModifiedDate":"2023-09-19"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" validTasks.addTask(new Event(\"holiday in Germany\", DateTimeParser.parseDate(\"2019-11-15 0800\"),","lastModifiedDate":"2023-09-19"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" DateTimeParser.parseDate(\"2023-12-15 0800\")));","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" File file \u003d new File(TEST_FILE_VALID);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" for (Task task : validTasks.getTasks()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" public void loadTasksFromHardDisk() throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" Storage storage \u003d new Storage(TEST_FILE_VALID);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" storage.loadTasksFromFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" assertEquals(tasks.listTasks(), validTasks.listTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" public void saveTasksToHardDisk() throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(new ToDo(\"go to zoo\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(new Deadline(\"submit assignment\", DateTimeParser.parseDate(\"2023-11-15 0800\")));","lastModifiedDate":"2023-09-19"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(new Event(\"holiday in Germany\", DateTimeParser.parseDate(\"2019-11-15 0800\"),","lastModifiedDate":"2023-09-19"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" DateTimeParser.parseDate(\"2023-12-15 0800\")));","lastModifiedDate":"2023-09-19"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" Storage storage \u003d new Storage(TEST_FILE_TEST);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" String content1 \u003d readFileContent(TEST_FILE_VALID);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" String content2 \u003d readFileContent(TEST_FILE_TEST);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" assertEquals(content1, content2);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" @AfterAll","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" public static void tearDown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" File directory \u003d new File(TEST_FILE_VALID).getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" deleteDirectory(directory);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" private static void deleteDirectory(File directory) {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" if (directory.isDirectory()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":" File[] files \u003d directory.listFiles();","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" if (files !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" for (File file : files) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" if (file.isDirectory()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" deleteDirectory(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" file.delete();","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" directory.delete();","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"m1oojv"},"content":" private String readFileContent(String filePath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"m1oojv"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"m1oojv"},"content":" byte[] fileBytes \u003d Files.readAllBytes(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"m1oojv"},"content":" return new String(fileBytes);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":100}},{"path":"test-test/test.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"T | 0 | buy book","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"D | 0 | return book | 2023-11-15T08:00","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"E | 0 | pool party | 2019-11-15T08:00 to 2023-11-15T08:00","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"m1oojv":3}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"T | 0 | go to the zoo","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":1}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"todo borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"deadline return book /by 2019-10-15","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"event project meeting /from 2/12/2019 1600 /to 2/12/2019 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"mark 1","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"mark 4","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"unmark 1","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"delete 4","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"delete 3","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"delete 2","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"m1oojv":14}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/sam/*.java","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"java -classpath ../bin sam.Sam \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"m1oojv":2,"-":36}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" mainClass.set(\"sam.Launcher\")","lastModifiedDate":"2023-09-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" archiveBaseName \u003d \"sam\"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"m1oojv":16,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"# Sam Chatbot User Guide","lastModifiedDate":"2023-09-19"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"***Meet SAM, your trusty Task Manager*** 🚀","lastModifiedDate":"2023-09-19"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"**SAM** isn\u0027t your ordinary task manager; it\u0027s the Gandalf of productivity, the Sherlock Holmes of organization, and ","lastModifiedDate":"2023-09-19"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"the Mary Poppins of reminders, all rolled into one nifty app. 🎩✨","lastModifiedDate":"2023-09-19"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"With **SAM** by your side, those daunting to-do lists become thrilling quests, deadlines are no match for your ","lastModifiedDate":"2023-09-19"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"ninja-like scheduling skills, and chaos turns into pure, organized magic! 🪄📅","lastModifiedDate":"2023-09-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"So, say farewell to the chaos, bid adieu to procrastination, and let **SAM** be your loyal companion on your journey ","lastModifiedDate":"2023-09-19"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"to conquering tasks like a true hero. 🦸‍♀️","lastModifiedDate":"2023-09-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"Ready to embark on this epic adventure of productivity? Let\u0027s go! 🌟","lastModifiedDate":"2023-09-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"![SAMDemo](../docs/Ui.png)","lastModifiedDate":"2023-09-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"## Features ","lastModifiedDate":"2023-09-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":"### Task Management","lastModifiedDate":"2023-09-19"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"Task Management is at the heart of SAM\u0027s functionality. It empowers you to efficiently handle your to-dos, ","lastModifiedDate":"2023-09-19"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"events, and deadlines all in one place. With intuitive commands and a user-friendly interface, ","lastModifiedDate":"2023-09-19"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"SAM\u0027s Task Management feature ensures you stay on top of your tasks, helping you achieve productivity ","lastModifiedDate":"2023-09-19"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"like never before.","lastModifiedDate":"2023-09-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":26,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"### 1. Viewing help : `help`","lastModifiedDate":"2023-09-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":"Whenever you find yourself in need of guidance, this command is here to assist you by providing a comprehensive ","lastModifiedDate":"2023-09-19"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":"list of all available instructions.","lastModifiedDate":"2023-09-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"Example of usage: ","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":"`help`","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":37,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":"- A list of all available instructions with its respective formats.","lastModifiedDate":"2023-09-19"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":"List of possible commands: ","lastModifiedDate":"2023-09-19"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":"todo: Adds a todo to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":"Example: todo borrow books","lastModifiedDate":"2023-09-19"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":"event: Adds an event to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":"Parameters: DESCRIPTION /from DATETIME /to DATETIME ","lastModifiedDate":"2023-09-19"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":"Example: event go to project meeting /from 2019-10-15 1800 /to 2020-12-2 2000","lastModifiedDate":"2023-09-19"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":"deadline: Adds a deadline to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":"Parameters: DESCRIPTION /by DATETIME ","lastModifiedDate":"2023-09-19"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":"Example: deadline return homework /by 2023-11-15 0800 ","lastModifiedDate":"2023-09-19"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":"delete: Deletes the task identified by the index number.","lastModifiedDate":"2023-09-19"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":"Example: delete 1","lastModifiedDate":"2023-09-19"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":"mark: mark the tasks identified by the index number as completed.","lastModifiedDate":"2023-09-19"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":"Example: mark1","lastModifiedDate":"2023-09-19"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":"unmark: mark the tasks identified by the index number as incomplete.","lastModifiedDate":"2023-09-19"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":"Example: unmark1","lastModifiedDate":"2023-09-19"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":"tag: tag the tasks identified by the index number with tags.","lastModifiedDate":"2023-09-19"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX #DESCRIPTION ","lastModifiedDate":"2023-09-19"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":"Example: tag 1 #fun","lastModifiedDate":"2023-09-19"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":"list: list the tasks in the task list.","lastModifiedDate":"2023-09-19"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":"Example: list","lastModifiedDate":"2023-09-19"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":"help: Shows program usage instructions.","lastModifiedDate":"2023-09-19"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":"Example: help","lastModifiedDate":"2023-09-19"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":"bye: Exits the program.","lastModifiedDate":"2023-09-19"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":"Example: bye","lastModifiedDate":"2023-09-19"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":"### 2. Making a ToDo Task: `todo n/TASKNAME`","lastModifiedDate":"2023-09-19"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":"Use this command to craft a new to-do task item effortlessly.","lastModifiedDate":"2023-09-19"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":"`todo return book`","lastModifiedDate":"2023-09-19"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-19"},{"lineNumber":94,"author":{"gitId":"m1oojv"},"content":"\t[T][ ] return book","lastModifiedDate":"2023-09-19"},{"lineNumber":95,"author":{"gitId":"m1oojv"},"content":"Now you have 1 task in the list.","lastModifiedDate":"2023-09-19"},{"lineNumber":96,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":97,"author":{"gitId":"m1oojv"},"content":"- Error Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":98,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":99,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":100,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":101,"author":{"gitId":"m1oojv"},"content":"todo: Adds a todo to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":102,"author":{"gitId":"m1oojv"},"content":"Example: todo borrow books","lastModifiedDate":"2023-09-19"},{"lineNumber":103,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":104,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":105,"author":{"gitId":"m1oojv"},"content":"### 2. Making a Deadline Task: `deadline n/TASKNAME /by DATETIME`","lastModifiedDate":"2023-09-19"},{"lineNumber":106,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":107,"author":{"gitId":"m1oojv"},"content":"Use this command to craft a new deadline task item effortlessly.","lastModifiedDate":"2023-09-19"},{"lineNumber":108,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":109,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":110,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":111,"author":{"gitId":"m1oojv"},"content":"`deadline return homework /by 2023-11-15 0800`","lastModifiedDate":"2023-09-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":113,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":114,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":116,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":117,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":118,"author":{"gitId":"m1oojv"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-19"},{"lineNumber":119,"author":{"gitId":"m1oojv"},"content":"\t[D][ ] return homework (by: Nov 15 2023 08:00 am)","lastModifiedDate":"2023-09-19"},{"lineNumber":120,"author":{"gitId":"m1oojv"},"content":"Now you have 1 task in the list.","lastModifiedDate":"2023-09-19"},{"lineNumber":121,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":122,"author":{"gitId":"m1oojv"},"content":"- Error Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":123,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":124,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":125,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":126,"author":{"gitId":"m1oojv"},"content":"deadline: Adds a deadline to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":127,"author":{"gitId":"m1oojv"},"content":"Parameters: DESCRIPTION /by DATETIME ","lastModifiedDate":"2023-09-19"},{"lineNumber":128,"author":{"gitId":"m1oojv"},"content":"Example: deadline return homework /by 2023-11-15 0800 ","lastModifiedDate":"2023-09-19"},{"lineNumber":129,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":130,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":131,"author":{"gitId":"m1oojv"},"content":"### 4. Making a Event Task: `event n/TASKNAME /from DATETIME /to DATETIME`","lastModifiedDate":"2023-09-19"},{"lineNumber":132,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":133,"author":{"gitId":"m1oojv"},"content":"Use this command to craft a new event item effortlessly.","lastModifiedDate":"2023-09-19"},{"lineNumber":134,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":135,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":136,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":137,"author":{"gitId":"m1oojv"},"content":"`event go to project meeting /from 2019-10-15 1800 /to 2020-12-2 2000`","lastModifiedDate":"2023-09-19"},{"lineNumber":138,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":139,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":140,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":141,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":142,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":143,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":144,"author":{"gitId":"m1oojv"},"content":"Got it. I\u0027ve added this task:","lastModifiedDate":"2023-09-19"},{"lineNumber":145,"author":{"gitId":"m1oojv"},"content":"\t[E][ ] go to project meeting (from: Oct 15 2019 06:00 pm, to: Dec 2 2020 08:00 pm)","lastModifiedDate":"2023-09-19"},{"lineNumber":146,"author":{"gitId":"m1oojv"},"content":"Now you have 5 tasks in the list.","lastModifiedDate":"2023-09-19"},{"lineNumber":147,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":148,"author":{"gitId":"m1oojv"},"content":"- Error Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":149,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":150,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":151,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":152,"author":{"gitId":"m1oojv"},"content":"event: Adds an event to the task list. ","lastModifiedDate":"2023-09-19"},{"lineNumber":153,"author":{"gitId":"m1oojv"},"content":"Parameters: DESCRIPTION /from DATETIME /to DATETIME ","lastModifiedDate":"2023-09-19"},{"lineNumber":154,"author":{"gitId":"m1oojv"},"content":"Example: event go to project meeting /from 2019-10-15 1800 /to 2020-12-2 2000","lastModifiedDate":"2023-09-19"},{"lineNumber":155,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":156,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":157,"author":{"gitId":"m1oojv"},"content":"### 5. Delete Task: `delete n/INDEX`","lastModifiedDate":"2023-09-19"},{"lineNumber":158,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":159,"author":{"gitId":"m1oojv"},"content":"When it\u0027s time to bid farewell to a task, simply use this command with the task\u0027s index to delete it from your list.","lastModifiedDate":"2023-09-19"},{"lineNumber":160,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":161,"author":{"gitId":"m1oojv"},"content":"**Warning:**","lastModifiedDate":"2023-09-19"},{"lineNumber":162,"author":{"gitId":"m1oojv"},"content":"Potentially Dangerous Operation! Deleting a task is irreversible and cannot be undone.","lastModifiedDate":"2023-09-19"},{"lineNumber":163,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":164,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":165,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":166,"author":{"gitId":"m1oojv"},"content":"`delete 2`","lastModifiedDate":"2023-09-19"},{"lineNumber":167,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":168,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":169,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":170,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":171,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":172,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":173,"author":{"gitId":"m1oojv"},"content":"Noted. I\u0027ve removed this task:","lastModifiedDate":"2023-09-19"},{"lineNumber":174,"author":{"gitId":"m1oojv"},"content":"\t[T][ ] return book","lastModifiedDate":"2023-09-19"},{"lineNumber":175,"author":{"gitId":"m1oojv"},"content":"Now you have 3 tasks in the list.","lastModifiedDate":"2023-09-19"},{"lineNumber":176,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":177,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong index number:","lastModifiedDate":"2023-09-19"},{"lineNumber":178,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":179,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":180,"author":{"gitId":"m1oojv"},"content":"Invalid task index.","lastModifiedDate":"2023-09-19"},{"lineNumber":181,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":182,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong command format:","lastModifiedDate":"2023-09-19"},{"lineNumber":183,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":184,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":185,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":186,"author":{"gitId":"m1oojv"},"content":"delete: Deletes the task identified by the index number.","lastModifiedDate":"2023-09-19"},{"lineNumber":187,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":188,"author":{"gitId":"m1oojv"},"content":"Example: delete 1","lastModifiedDate":"2023-09-19"},{"lineNumber":189,"author":{"gitId":"m1oojv"},"content":"Could not find index number to parse","lastModifiedDate":"2023-09-19"},{"lineNumber":190,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":191,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":192,"author":{"gitId":"m1oojv"},"content":"### 6. Completing a Task: `mark n/INDEX`","lastModifiedDate":"2023-09-19"},{"lineNumber":193,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":194,"author":{"gitId":"m1oojv"},"content":"To mark a task as done, simply use this command with the task\u0027s index.","lastModifiedDate":"2023-09-19"},{"lineNumber":195,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":196,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":197,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":198,"author":{"gitId":"m1oojv"},"content":"`mark 2`","lastModifiedDate":"2023-09-19"},{"lineNumber":199,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":200,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":201,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":202,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":203,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":204,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":205,"author":{"gitId":"m1oojv"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-19"},{"lineNumber":206,"author":{"gitId":"m1oojv"},"content":"\t[D][X] return homework (by: Nov 15 2023 08:00 am)","lastModifiedDate":"2023-09-19"},{"lineNumber":207,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":208,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong index number:","lastModifiedDate":"2023-09-19"},{"lineNumber":209,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":210,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":211,"author":{"gitId":"m1oojv"},"content":"Invalid task index.","lastModifiedDate":"2023-09-19"},{"lineNumber":212,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":213,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong command format:","lastModifiedDate":"2023-09-19"},{"lineNumber":214,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":215,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":216,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":217,"author":{"gitId":"m1oojv"},"content":"mark: mark the tasks identified by the index number as completed.","lastModifiedDate":"2023-09-19"},{"lineNumber":218,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":219,"author":{"gitId":"m1oojv"},"content":"Example: mark 1","lastModifiedDate":"2023-09-19"},{"lineNumber":220,"author":{"gitId":"m1oojv"},"content":"Could not find index number to parse","lastModifiedDate":"2023-09-19"},{"lineNumber":221,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":222,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":223,"author":{"gitId":"m1oojv"},"content":"### 7. Reversing Task Completion: `unmark n/INDEX`","lastModifiedDate":"2023-09-19"},{"lineNumber":224,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":225,"author":{"gitId":"m1oojv"},"content":"To mark a task as not done or incomplete, utilize this command with the task\u0027s index.","lastModifiedDate":"2023-09-19"},{"lineNumber":226,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":227,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":228,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":229,"author":{"gitId":"m1oojv"},"content":"`unmark 2`","lastModifiedDate":"2023-09-19"},{"lineNumber":230,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":231,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":232,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":233,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":234,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":235,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":236,"author":{"gitId":"m1oojv"},"content":"OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-09-19"},{"lineNumber":237,"author":{"gitId":"m1oojv"},"content":"\t[D][ ] return homework (by: Nov 15 2023 08:00 am)","lastModifiedDate":"2023-09-19"},{"lineNumber":238,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":239,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong index number:","lastModifiedDate":"2023-09-19"},{"lineNumber":240,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":241,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":242,"author":{"gitId":"m1oojv"},"content":"Invalid task index.","lastModifiedDate":"2023-09-19"},{"lineNumber":243,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":244,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong command format:","lastModifiedDate":"2023-09-19"},{"lineNumber":245,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":246,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":247,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":248,"author":{"gitId":"m1oojv"},"content":"unmark: mark the tasks identified by the index number as incomplete.","lastModifiedDate":"2023-09-19"},{"lineNumber":249,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX","lastModifiedDate":"2023-09-19"},{"lineNumber":250,"author":{"gitId":"m1oojv"},"content":"Example: unmark 1","lastModifiedDate":"2023-09-19"},{"lineNumber":251,"author":{"gitId":"m1oojv"},"content":"Could not find index number to parse","lastModifiedDate":"2023-09-19"},{"lineNumber":252,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":253,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":254,"author":{"gitId":"m1oojv"},"content":"### 8. Tagging a task: `tag n/INDEX n/#TAGNAME`","lastModifiedDate":"2023-09-19"},{"lineNumber":255,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":256,"author":{"gitId":"m1oojv"},"content":"Easily add tags to your tasks by using this command with the desired tag name.","lastModifiedDate":"2023-09-19"},{"lineNumber":257,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":258,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":259,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":260,"author":{"gitId":"m1oojv"},"content":"`tag 2 #cool`","lastModifiedDate":"2023-09-19"},{"lineNumber":261,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":262,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":263,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":264,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":265,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":266,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":267,"author":{"gitId":"m1oojv"},"content":"Nice! I\u0027ve tagged this task:","lastModifiedDate":"2023-09-19"},{"lineNumber":268,"author":{"gitId":"m1oojv"},"content":"\t[D][X] return homework #cool (by: Nov 15 2023 08:00 am)","lastModifiedDate":"2023-09-19"},{"lineNumber":269,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":270,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong index number:","lastModifiedDate":"2023-09-19"},{"lineNumber":271,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":272,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":273,"author":{"gitId":"m1oojv"},"content":"Invalid task index.","lastModifiedDate":"2023-09-19"},{"lineNumber":274,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":275,"author":{"gitId":"m1oojv"},"content":"- Error Message for wrong command format:","lastModifiedDate":"2023-09-19"},{"lineNumber":276,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":277,"author":{"gitId":"m1oojv"},"content":"☹ OOPS!!!","lastModifiedDate":"2023-09-19"},{"lineNumber":278,"author":{"gitId":"m1oojv"},"content":"Invalid command format! ","lastModifiedDate":"2023-09-19"},{"lineNumber":279,"author":{"gitId":"m1oojv"},"content":"tag: tag the tasks identified by the index number with tags.","lastModifiedDate":"2023-09-19"},{"lineNumber":280,"author":{"gitId":"m1oojv"},"content":"Parameters: INDEX #DESCRIPTION ","lastModifiedDate":"2023-09-19"},{"lineNumber":281,"author":{"gitId":"m1oojv"},"content":"Example: tag 1 #fun","lastModifiedDate":"2023-09-19"},{"lineNumber":282,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":283,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":284,"author":{"gitId":"m1oojv"},"content":"### 9. Listing All Tasks: `list`","lastModifiedDate":"2023-09-19"},{"lineNumber":285,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":286,"author":{"gitId":"m1oojv"},"content":"View all your tasks in one comprehensive list with this straightforward command.","lastModifiedDate":"2023-09-19"},{"lineNumber":287,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":288,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":289,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":290,"author":{"gitId":"m1oojv"},"content":"`list`","lastModifiedDate":"2023-09-19"},{"lineNumber":291,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":292,"author":{"gitId":"m1oojv"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":293,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":294,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":295,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":296,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":297,"author":{"gitId":"m1oojv"},"content":"Here are the tasks in your list:","lastModifiedDate":"2023-09-19"},{"lineNumber":298,"author":{"gitId":"m1oojv"},"content":"\t1.[T][ ] zoo #fun #grr ","lastModifiedDate":"2023-09-19"},{"lineNumber":299,"author":{"gitId":"m1oojv"},"content":"\t2.[E][X] go to projecting #notfun (from: Oct 15 2019 06:00 pm, to: Dec 2 2020 08:00 pm)","lastModifiedDate":"2023-09-19"},{"lineNumber":300,"author":{"gitId":"m1oojv"},"content":"\t3.[D][X] return homework #cool (by: Nov 15 2023 08:00 am)","lastModifiedDate":"2023-09-19"},{"lineNumber":301,"author":{"gitId":"m1oojv"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":302,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":303,"author":{"gitId":"m1oojv"},"content":"### 10. End Program: `bye`","lastModifiedDate":"2023-09-19"},{"lineNumber":304,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":305,"author":{"gitId":"m1oojv"},"content":"View all your tasks in one comprehensive list with this straightforward command.","lastModifiedDate":"2023-09-19"},{"lineNumber":306,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":307,"author":{"gitId":"m1oojv"},"content":"Example of usage:","lastModifiedDate":"2023-09-19"},{"lineNumber":308,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":309,"author":{"gitId":"m1oojv"},"content":"`bye`","lastModifiedDate":"2023-09-19"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":311,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2023-09-19"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":313,"author":{"gitId":"m1oojv"},"content":"- Success Message:","lastModifiedDate":"2023-09-19"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":315,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":316,"author":{"gitId":"m1oojv"},"content":"Bye. Hope to see you again soon!","lastModifiedDate":"2023-09-19"},{"lineNumber":317,"author":{"gitId":"m1oojv"},"content":"Remember, the universe is vast, but I\u0027m always here for you :D","lastModifiedDate":"2023-09-19"},{"lineNumber":318,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-19"},{"lineNumber":319,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"}],"authorContributionMap":{"m1oojv":294,"-":25}},{"path":"src/main/java/sam/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"public class Launcher {","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":12}},{"path":"src/main/java/sam/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import sam.gui.MainWindow;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" private Sam sam \u003d new Sam();","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setSam(sam, stage);","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" stage.show();","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":32}},{"path":"src/main/java/sam/Sam.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.commands.Command;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.commands.CommandResult;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.services.parser.Parser;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"public class Sam {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" private final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" private Storage storage;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" private Ui ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" private Parser parser;","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public Sam() {","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" this.storage \u003d new Storage(FILE_PATH);","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" storage.loadTasksFromFile(this.taskList);","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" public CommandResult getResult(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" Command c \u003d parser.parseCommand(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" if (c.isExit()) {","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" return null;","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" return c.execute(taskList, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":37}},{"path":"src/main/java/sam/commands/AddDeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" * Adds a deadline to the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"public class AddDeadlineCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a deadline to the task list. \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: DESCRIPTION /by DATETIME \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" + \" return homework /by 2023-11-15 0800 \";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" public AddDeadlineCommand(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" Task deadline \u003d new Deadline(this.description, this.by);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(deadline);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.ADD_TASKS, \"\\t\" + deadline, tasks.getTaskCountSummary());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.ADD_TASKS, \"\\t\" + deadline, tasks.getTaskCountSummary());","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":48}},{"path":"src/main/java/sam/commands/AddEventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" * Adds an event to the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds an event to the task list. \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: DESCRIPTION /from DATETIME /to DATETIME \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" + \" go to project meeting /from 2019-10-15 1800 /to 2020-12-2 2000\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" public AddEventCommand(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" Task event \u003d new Event(this.description, this.from, this.to);","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.ADD_TASKS, \"\\t\" + event, tasks.getTaskCountSummary());","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.ADD_TASKS, \"\\t\" + event, tasks.getTaskCountSummary());","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":49}},{"path":"src/main/java/sam/commands/AddTagCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-09-19"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" * Mark a task as done from the task list.","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"public class AddTagCommand extends Command {","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"tag\";","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" + \": tag the tasks identified by the index number with tags.\\n\"","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: INDEX #DESCRIPTION \\n\"","lastModifiedDate":"2023-09-12"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 #fun\";","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" private Integer index;","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" private String description;","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public AddTagCommand(Integer index, String description) {","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" tasks.addTagToTask(index, description);","lastModifiedDate":"2023-09-19"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.TAG_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.TAG_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-19"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-09-19"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-19"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"m1oojv":45}},{"path":"src/main/java/sam/commands/AddToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" * Adds a ToDo to the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"public class AddToDoCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a todo to the task list. \\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" + \" borrow books\";","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" private String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public AddToDoCommand(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" Task todo \u003d new ToDo(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(todo);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.ADD_TASKS, \"\\t\" + todo, tasks.getTaskCountSummary());","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.ADD_TASKS, \"\\t\" + todo, tasks.getTaskCountSummary());","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":43}},{"path":"src/main/java/sam/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" * Represents an executable command.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" * Based on AddressBook2","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" * @return the result of the command.","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public abstract CommandResult execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" * Returns that it is the end of the conversation.","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" * @return boolean of whether it is an Exit Command.","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" return this instanceof ExitCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":28}},{"path":"src/main/java/sam/commands/CommandResult.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":" * Based on AddressBook2","lastModifiedDate":"2023-09-19"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"public class CommandResult {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" /** The feedback message to be shown to the user. Contains a description of the execution result */","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" public final String feedbackToUser;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public CommandResult(String... args) {","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" for (String arg : args) {","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(arg).append(\"\\n\");","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" this.feedbackToUser \u003d stringBuilder.toString();","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" * Returns message relevant to the command result, if any.","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public String getFeedback() {","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" return this.feedbackToUser;","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":27}},{"path":"src/main/java/sam/commands/DeleteTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" + \": Deletes the task identified by the index number.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" private Integer index;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public DeleteTaskCommand(Integer index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" Task removedTask \u003d tasks.deleteTask(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.DELETE_TASK, \"\\t\" + removedTask, tasks.getTaskCountSummary());","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.DELETE_TASK, \"\\t\" + removedTask, tasks.getTaskCountSummary());","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":44}},{"path":"src/main/java/sam/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" * Exits the program.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"bye\";","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Exits the program.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" public ExitCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" ui.shutDown();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.BYE);","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":25}},{"path":"src/main/java/sam/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" * List all tasks from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" + \": find similar tasks in the task list.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD + \" book\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" private String search;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public FindCommand(String search) {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" this.search \u003d search;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" TaskList list \u003d tasks.findTasks(search);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.SEARCH_TASK_SUCCESS, list.listTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.SEARCH_TASK_SUCCESS, list.listTasks());","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand( e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":36}},{"path":"src/main/java/sam/commands/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" * Shows help instructions.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" * Based on AddressBook2","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"help\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows program usage instructions.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public static final String ALL_COMMAND_USAGES \u003d \"List of possible commands: \\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + AddToDoCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + AddEventCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + AddDeadlineCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + DeleteTaskCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + MarkTaskCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + UnmarkTaskCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + AddTagCommand.MESSAGE_USAGE","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + ListCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + HelpCommand.MESSAGE_USAGE","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" + \"\\n\\n\" + ExitCommand.MESSAGE_USAGE;","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(ALL_COMMAND_USAGES);","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(ALL_COMMAND_USAGES);","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":36}},{"path":"src/main/java/sam/commands/IncorrectCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" * Represents an incorrect command.","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"public class IncorrectCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public final String feedbackToUser;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" public IncorrectCommand(String feedbackToUser) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" this.feedbackToUser \u003d feedbackToUser;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(feedbackToUser);","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.ERROR, \" \" + feedbackToUser);","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":23}},{"path":"src/main/java/sam/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" * List all tasks from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" + \": list the tasks in the task list.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public ListCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" String list \u003d tasks.listTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.LIST_TASKS, list);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.LIST_TASKS, list);","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":34}},{"path":"src/main/java/sam/commands/MarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" * Mark a task as done from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" + \": mark the tasks identified by the index number as completed.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" private Integer index;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public MarkTaskCommand(Integer index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" tasks.markTaskAsDone(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.MARK_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.MARK_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":43}},{"path":"src/main/java/sam/commands/UnmarkTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.commands;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.services.Ui;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" * Mark a task as not done from the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String COMMAND_WORD \u003d \"unmark\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" + \": mark the tasks identified by the index number as incomplete.\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" + \"Parameters: INDEX\\n\"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" private Integer index;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public UnmarkTaskCommand(Integer index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" public CommandResult execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" tasks.markTaskAsNotDone(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" ui.printMessage(Message.UNMARK_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" return new CommandResult(Message.UNMARK_TASK, \"\\t\" + tasks.getTask(index));","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" ui.showError(Message.FAILED_TO_SAVE + e.getMessage());","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(Message.FAILED_TO_SAVE","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" + e.getMessage()).execute(tasks, ui, storage);","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":44}},{"path":"src/main/java/sam/constants/Message.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.constants;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":" * Container for user visible messages.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"public class Message {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"// Message for Start","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" public static final String WELCOME \u003d \"Hello! I\u0027m Sam, your personal AI chatbot, ready to serve you today\\n\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" \"What can I do for you?\";","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"// Messages for response to commands","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public static final String BYE \u003d \"Bye. Hope to see you again soon!\\nRemember, the universe is vast, but \" +","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" \"I\u0027m always here for you :D\";","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" public static final String LIST_TASKS \u003d \"Here are the tasks in your list:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" public static final String ADD_TASKS \u003d \"Got it. I\u0027ve added this task:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public static final String MARK_TASK \u003d \"Nice! I\u0027ve marked this task as done:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public static final String TAG_TASK \u003d \"Nice! I\u0027ve tagged this task:\";","lastModifiedDate":"2023-09-12"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public static final String DELETE_TASK \u003d \"Noted. I\u0027ve removed this task:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public static final String UNMARK_TASK \u003d \"OK, I\u0027ve marked this task as not done yet:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"// Messages for errors","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public static final String ERROR \u003d \"☹ OOPS!!!\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public static final String TASK_LIST_EMPTY \u003d \"The task list is empty.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" public static final String TASK_LIST_INVALID_INDEX \u003d \"Invalid task index.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" public static final String INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" public static final String CORRUPTED_FILE_ERROR \u003d \"Saved data not found due to corruption. \\n Corrupted task : \";","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" public static final String FAILED_TO_SAVE \u003d \"Failed to save \";","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" public static final String SEARCH_TASK_SUCCESS \u003d \"Here are the matching tasks in your list:\";","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" public static final String TASK_NOT_FOUND \u003d \"No tasks found.\";","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":32}},{"path":"src/main/java/sam/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.exceptions;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":" * Signals an error caused by command.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":10}},{"path":"src/main/java/sam/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.gui;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.text.TextAlignment;","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.text.Text;","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" private Text dialog;","lastModifiedDate":"2023-09-26"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" private final static double width \u003d 550.0;","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" private void flip() {","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-06"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" dialog.setWrappingWidth(width);","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" * Wrap the dialog box such that the text does not exceed the window width.","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" private void wrap() {","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" dialog.setWrappingWidth(width);","lastModifiedDate":"2023-09-26"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" dialog.setTextAlignment(TextAlignment.RIGHT);","lastModifiedDate":"2023-09-26"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-06"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" db.wrap();","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" return db;","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" public static DialogBox getSamDialog(String text, Image img) {","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-06"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" db.flip();","lastModifiedDate":"2023-09-06"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" return db;","lastModifiedDate":"2023-09-06"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":75}},{"path":"src/main/java/sam/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.gui;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import sam.Sam;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"import sam.commands.CommandResult;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" private Stage stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" private Sam sam;","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" private final Image USER_IMAGE \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.png\"));","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" private final Image SAM_IMAGE \u003d new Image(this.getClass().getResourceAsStream(\"/images/sam.gif\"));","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" private final static double width \u003d 680.0;","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" public void initialize() {","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" DialogBox.getSamDialog(Message.WELCOME, SAM_IMAGE)","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" public void setSam(Sam d, Stage stage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" this.sam \u003d d;","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" this.stage \u003d stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" stage.setMinWidth(width);","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" stage.setMaxWidth(width);","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-06"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" CommandResult result \u003d null;","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" String response \u003d null;","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" result \u003d sam.getResult(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" response \u003d result.getFeedback();","lastModifiedDate":"2023-09-06"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-06"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" response \u003d e.getMessage();","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" } finally {","lastModifiedDate":"2023-09-06"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" assert response !\u003d null : \"No response message returned from Sam\";","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" userInput.clear();","lastModifiedDate":"2023-09-06"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" if (result \u003d\u003d null) {","lastModifiedDate":"2023-09-06"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-06"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" DialogBox.getUserDialog(input, USER_IMAGE)","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-09-06"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" handleExit();","lastModifiedDate":"2023-09-06"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" return;","lastModifiedDate":"2023-09-06"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-06"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" DialogBox.getUserDialog(input, USER_IMAGE),","lastModifiedDate":"2023-09-06"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":" DialogBox.getSamDialog(response, SAM_IMAGE)","lastModifiedDate":"2023-09-06"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-09-06"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" * Closes the application.","lastModifiedDate":"2023-09-06"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" @FXML","lastModifiedDate":"2023-09-06"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" private void handleExit() {","lastModifiedDate":"2023-09-06"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-06"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" DialogBox.getSamDialog(Message.BYE, SAM_IMAGE)","lastModifiedDate":"2023-09-06"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-09-06"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":" PauseTransition delay \u003d new PauseTransition(Duration.seconds(3));","lastModifiedDate":"2023-09-06"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" delay.setOnFinished(event -\u003e this.stage.close());","lastModifiedDate":"2023-09-06"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" delay.play();","lastModifiedDate":"2023-09-06"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":94,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":94}},{"path":"src/main/java/sam/services/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.services.parser.FileParser;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" * Represents the hard disk used to store task list data.","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" private String path;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public Storage(String path) {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" this.path \u003d path;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" * Ensure that the hard disk is present in the file directory.","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" * Creates the file if not found.","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" * @return the new file created","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" private File createHardDisk() {","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" File file \u003d new File(this.path);","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" assert file.getParentFile().exists() : \"Directory cannot be found\";","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" return file;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" * Saves the {@code taskList} data to the storage file.","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" * @throws IOException if there were errors converting and/or storing data to file.","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" public void saveTasksToFile(TaskList tasks) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" File file \u003d createHardDisk();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" for (Task task : tasks.getTasks()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" assert file.exists() : \"Hard disk file is not created\";","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" * Loads the {@code taskList} data from this storage file into the TaskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" * @throws IOException if there were errors reading and/or converting data from file.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" public void loadTasksFromFile(TaskList tasks) throws IOException, DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" File file \u003d createHardDisk();","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" List\u003cString\u003e list \u003d Files.readAllLines(file.toPath());","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" for (String taskString : list) {","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" Task task \u003d FileParser.parseTaskFromString(taskString);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":71}},{"path":"src/main/java/sam/services/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" * Represents the entire task list. Contains the data of the tasks.","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" * Creates an empty task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public TaskList() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" * Return a copy of the entire taskList.","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" * @return a copy of the taskList.","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" return new ArrayList\u003c\u003e(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" * Provide size of task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" * @return the size of the taskList","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" public Integer getSize() {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" return tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" * Add task to task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" * @param task the new task created","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" * Gets specific tasks according to their index number in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" * @param index the index number of the task in the task list","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" * @return the task requested","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" public Task getTask(Integer index) {","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" * Provides the task list in a list format.","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" * @return the taskList string","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" public String listTasks() throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_LIST_EMPTY);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" sb.append(\"\\t\");","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" sb.append(i + 1);","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" sb.append(\".\");","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" sb.append(tasks.get(i).toString());","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" return sb.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":" * Mark a specific task as done according to their index number in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" * @param index the index number of the task in the task list","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" public void markTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_LIST_INVALID_INDEX);","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" * Mark a specific task as not done according to their index number in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"m1oojv"},"content":" * @param index the index number of the task in the task list","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"m1oojv"},"content":" public void markTaskAsNotDone(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"m1oojv"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_LIST_INVALID_INDEX);","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"m1oojv"},"content":" tasks.get(index).markAsNotDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-19"},{"lineNumber":104,"author":{"gitId":"m1oojv"},"content":" * Mark a specific task as done according to their index number in the task list.","lastModifiedDate":"2023-09-19"},{"lineNumber":105,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-19"},{"lineNumber":106,"author":{"gitId":"m1oojv"},"content":" * @param index the index number of the task in the task list","lastModifiedDate":"2023-09-19"},{"lineNumber":107,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-19"},{"lineNumber":108,"author":{"gitId":"m1oojv"},"content":" public void addTagToTask(int index, String description) throws DukeException {","lastModifiedDate":"2023-09-19"},{"lineNumber":109,"author":{"gitId":"m1oojv"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-09-19"},{"lineNumber":110,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_LIST_INVALID_INDEX);","lastModifiedDate":"2023-09-19"},{"lineNumber":111,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":112,"author":{"gitId":"m1oojv"},"content":" tasks.get(index).addTag(description);","lastModifiedDate":"2023-09-19"},{"lineNumber":113,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-19"},{"lineNumber":114,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-19"},{"lineNumber":115,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"m1oojv"},"content":" * Delete a specific task according to their index number in the task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"m1oojv"},"content":" * @param index the index number of the task in the task list","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"m1oojv"},"content":" public Task deleteTask(int index) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"m1oojv"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_LIST_INVALID_INDEX);","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"m1oojv"},"content":" return tasks.remove(index);","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"m1oojv"},"content":" * Prints the total number of tasks left in the list.","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"m1oojv"},"content":" * @return the total number of tasks left in the list","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"m1oojv"},"content":" public String getTaskCountSummary() {","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"m1oojv"},"content":" int size \u003d tasks.size();","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"m1oojv"},"content":" if (size \u003d\u003d 1) {","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"m1oojv"},"content":" return (\"Now you have \" + size + \" task in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"m1oojv"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"m1oojv"},"content":" return (\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"m1oojv"},"content":" * Search for similar tasks in task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"m1oojv"},"content":" * @param word user input for search","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"m1oojv"},"content":" * @return Task list of similar tasks","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"m1oojv"},"content":" public TaskList findTasks(String word) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"m1oojv"},"content":" TaskList tasksFound \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"m1oojv"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"m1oojv"},"content":" if (t.getDescription().contains(word)) {","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"m1oojv"},"content":" tasksFound.addTask(t);","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"m1oojv"},"content":" if (tasksFound.getSize() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.TASK_NOT_FOUND);","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"m1oojv"},"content":" return tasksFound;","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":159}},{"path":"src/main/java/sam/services/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" * Text UI of the application.","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" private final Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public Ui() {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" * Reads the user\u0027s input.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" * Generates and prints the divider.","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" public void showLine() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" System.out.println(\"______________________________________________________\" +","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" \"______\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" * Generates and prints the message with dividers.","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" * @param args full result args string","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" public void printMessage(String... args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" for (String arg : args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" System.out.printf(arg + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" this.showLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" * Generates and prints the ending message upon the end of the application.","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" public void shutDown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" this.printMessage(Message.BYE);","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" scanner.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" * Generates and prints the welcome message upon the start of the application.","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" public void showWelcome() {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" this.printMessage(Message.WELCOME);","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" * Generates and prints the error message upon each error faced(if any).","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" * @param error the error message from the exception","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" public void showError(String error) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" this.printMessage(Message.ERROR + \" \" + error);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":69}},{"path":"src/main/java/sam/services/parser/DateTimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import java.util.List;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" * Converts date and time to a standard format (MMM dd yyyy hh:mm a).","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"public class DateTimeParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" private static List\u003cDateTimeFormatter\u003e dateFormatters \u003d Arrays.asList(","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d\")","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" private static List\u003cDateTimeFormatter\u003e dateTimeFormatters \u003d Arrays.asList(","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"d-M-yyyy HHmm\"),","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" DateTimeFormatter.ofPattern(\"yyyy-M-d HHmm\")","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" );","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" public static LocalDateTime parseDate(String input) {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" for (DateTimeFormatter formatter : dateTimeFormatters) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" return LocalDateTime.parse(input, formatter);","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" // Try the next formatter if parsing fails","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" for (DateTimeFormatter formatter : dateFormatters) {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" return LocalDateTime.of(LocalDate.parse(input, formatter), LocalTime.MIDNIGHT);","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" // Try the next formatter if parsing fails","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" throw new IllegalArgumentException(\"Invalid date format: \" + input);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":46}},{"path":"src/main/java/sam/services/parser/FileParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.constants.Message;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import java.util.List;","lastModifiedDate":"2023-09-12"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" * Converts saved data from hard disk into current TaskList.","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"public class FileParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public static Task parseTaskFromString(String line) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" String[] parts \u003d line.split(\"\\\\s*\\\\|\\\\s*\"); // Split using the delimiter \"|\"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" String taskType \u003d parts[0].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" String status \u003d parts[1].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" if (!status.equals(\"0\") \u0026\u0026 !status.equals(\"1\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.CORRUPTED_FILE_ERROR + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" boolean isDone \u003d status.equals(\"1\");","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" String taskDescription \u003d parts[2].trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" List\u003cString\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" String additionalInfo;","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" if (parts.length \u003e 3 \u0026\u0026 parts[3].trim().startsWith(\"Tags:\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" tags \u003d extractTags(parts[3].trim());","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" additionalInfo \u003d parts.length \u003e 4 ? parts[4].trim() : null;","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" } else {","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" additionalInfo \u003d parts.length \u003e 3 ? parts[3].trim() : null;","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" case \"T\":","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" ToDo todo \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" todo.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" todo.addTags(tags);","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" return todo;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" case \"D\":","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" if (additionalInfo \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.CORRUPTED_FILE_ERROR + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" LocalDateTime by \u003d LocalDateTime.parse(additionalInfo);","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" Deadline deadline \u003d new Deadline(taskDescription, by);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" deadline.addTags(tags);","lastModifiedDate":"2023-09-12"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" return deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" case \"E\":","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" if (additionalInfo \u003d\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.CORRUPTED_FILE_ERROR + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" String[] eventParts \u003d additionalInfo.split(\" to \");","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" if (eventParts.length !\u003d 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(Message.CORRUPTED_FILE_ERROR + line);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" LocalDateTime from \u003d LocalDateTime.parse(eventParts[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" LocalDateTime to \u003d LocalDateTime.parse(eventParts[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" Event event \u003d new Event(taskDescription, from, to);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" if (isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" event.addTags(tags);","lastModifiedDate":"2023-09-12"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" return event;","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" assert false: \"Invalid Task Type saved in Hard disk.\";","lastModifiedDate":"2023-09-12"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":" return null;","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" // Helper method to extract tags from the additionalInfo string","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" private static List\u003cString\u003e extractTags(String additionalInfo) {","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" List\u003cString\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" if (additionalInfo !\u003d null \u0026\u0026 additionalInfo.contains(\"Tags:\")) {","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" String[] tagParts \u003d additionalInfo.split(\"Tags:\");","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" if (tagParts.length \u003e 1) {","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" String[] tagArray \u003d tagParts[1].trim().split(\"\\\\s+\");","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" tags.addAll(Arrays.asList(tagArray));","lastModifiedDate":"2023-09-12"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" return tags;","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":93}},{"path":"src/main/java/sam/services/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddEventCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.commands.HelpCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.commands.IncorrectCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddDeadlineCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddToDoCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import sam.commands.DeleteTaskCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import sam.commands.MarkTaskCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import sam.commands.UnmarkTaskCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"import sam.commands.ListCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import sam.commands.FindCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"import sam.commands.ExitCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddTagCommand;","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"import sam.exceptions.DukeException;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"import static sam.constants.Message.INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"import static sam.services.parser.TaskParser.prepareAddDeadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"import static sam.services.parser.TaskParser.prepareAddEvent;","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"import static sam.services.parser.TaskParser.prepareAddTodo;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":"import static sam.services.parser.TaskParser.prepareFind;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" * Parses user input.","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" * Based on AddressBook2","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" public static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" * @param userInput full user input string","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" * @return the command based on the user input","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" switch (commandWord) {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" case AddTagCommand.COMMAND_WORD:","lastModifiedDate":"2023-09-12"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" return prepareTag(arguments);","lastModifiedDate":"2023-09-12"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" case AddEventCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" return prepareAddEvent(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" case AddDeadlineCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" return prepareAddDeadline(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" case AddToDoCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" return prepareAddTodo(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" return prepareDelete(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" case MarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" return prepareMark(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" case UnmarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" return prepareUnmark(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" return prepareFind(arguments);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" case HelpCommand.COMMAND_WORD: // Fallthrough","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" default:","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" return new HelpCommand();","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the add tags to task command.","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-12"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-09-12"},{"lineNumber":94,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":96,"author":{"gitId":"m1oojv"},"content":" private Command prepareTag(String args) {","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"m1oojv"},"content":" final Pattern TAG_PATTERN \u003d Pattern.compile(\"(?\u003cindex\u003e\\\\d+)\\\\s+(?\u003cdescription\u003e#\\\\w+)\");","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d TAG_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-09-12"},{"lineNumber":99,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":101,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, AddTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-09-12"},{"lineNumber":102,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":103,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":104,"author":{"gitId":"m1oojv"},"content":" String index \u003d matcher.group(\"index\").trim();","lastModifiedDate":"2023-09-12"},{"lineNumber":105,"author":{"gitId":"m1oojv"},"content":" String description \u003d matcher.group(\"description\").trim();","lastModifiedDate":"2023-09-12"},{"lineNumber":106,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-09-12"},{"lineNumber":107,"author":{"gitId":"m1oojv"},"content":" final int targetIndex \u003d parseArgsAsDisplayedIndex(index);","lastModifiedDate":"2023-09-12"},{"lineNumber":108,"author":{"gitId":"m1oojv"},"content":" return new AddTagCommand(targetIndex, description );","lastModifiedDate":"2023-09-12"},{"lineNumber":109,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException pe) {","lastModifiedDate":"2023-09-12"},{"lineNumber":110,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT + \"\\n\" + pe.getMessage(),","lastModifiedDate":"2023-09-12"},{"lineNumber":111,"author":{"gitId":"m1oojv"},"content":" AddTagCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":114,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":115,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the delete task command.","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":119,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":120,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":121,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"m1oojv"},"content":" private Command prepareDelete(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":123,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":124,"author":{"gitId":"m1oojv"},"content":" final int targetIndex \u003d parseArgsAsDisplayedIndex(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":125,"author":{"gitId":"m1oojv"},"content":" return new DeleteTaskCommand(targetIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":126,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException pe) {","lastModifiedDate":"2023-08-30"},{"lineNumber":127,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT + \"\\n\" + pe.getMessage(),","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"m1oojv"},"content":" DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":129,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":130,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":131,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":133,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the mark task as done command.","lastModifiedDate":"2023-08-30"},{"lineNumber":134,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":135,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":136,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":137,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":138,"author":{"gitId":"m1oojv"},"content":" private Command prepareMark(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":139,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":140,"author":{"gitId":"m1oojv"},"content":" final int targetIndex \u003d parseArgsAsDisplayedIndex(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":141,"author":{"gitId":"m1oojv"},"content":" return new MarkTaskCommand(targetIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":142,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException pe) {","lastModifiedDate":"2023-08-30"},{"lineNumber":143,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT + \"\\n\" + pe.getMessage(),","lastModifiedDate":"2023-08-30"},{"lineNumber":144,"author":{"gitId":"m1oojv"},"content":" MarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":145,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":146,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":147,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":148,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":149,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the mark task as not done command.","lastModifiedDate":"2023-08-30"},{"lineNumber":150,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":151,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":152,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":153,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":154,"author":{"gitId":"m1oojv"},"content":" private Command prepareUnmark(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":155,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":156,"author":{"gitId":"m1oojv"},"content":" final int targetIndex \u003d parseArgsAsDisplayedIndex(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":157,"author":{"gitId":"m1oojv"},"content":" return new UnmarkTaskCommand(targetIndex);","lastModifiedDate":"2023-08-30"},{"lineNumber":158,"author":{"gitId":"m1oojv"},"content":" } catch (DukeException pe) {","lastModifiedDate":"2023-08-30"},{"lineNumber":159,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT + \"\\n\" + pe.getMessage(),","lastModifiedDate":"2023-08-30"},{"lineNumber":160,"author":{"gitId":"m1oojv"},"content":" UnmarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":161,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":162,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":163,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":164,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":165,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":166,"author":{"gitId":"m1oojv"},"content":" * Parses the given arguments string as a single index number.","lastModifiedDate":"2023-08-30"},{"lineNumber":167,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"m1oojv"},"content":" * @param args arguments string to parse as index number","lastModifiedDate":"2023-08-30"},{"lineNumber":169,"author":{"gitId":"m1oojv"},"content":" * @return the parsed index number","lastModifiedDate":"2023-08-30"},{"lineNumber":170,"author":{"gitId":"m1oojv"},"content":" * @throws DukeException if no region of the args string could be found for the index","lastModifiedDate":"2023-08-30"},{"lineNumber":171,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":172,"author":{"gitId":"m1oojv"},"content":" private int parseArgsAsDisplayedIndex(String args) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":173,"author":{"gitId":"m1oojv"},"content":" final Pattern TASK_INDEX_PATTERN \u003d Pattern.compile(\"(?\u003cindex\u003e\\\\d+)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":174,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d TASK_INDEX_PATTERN.matcher(args.trim());","lastModifiedDate":"2023-08-30"},{"lineNumber":175,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":176,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(\"Could not find index number to parse\");","lastModifiedDate":"2023-08-30"},{"lineNumber":177,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":178,"author":{"gitId":"m1oojv"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":179,"author":{"gitId":"m1oojv"},"content":" return Integer.parseInt(matcher.group(\"index\")) - 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":180,"author":{"gitId":"m1oojv"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":181,"author":{"gitId":"m1oojv"},"content":" throw new DukeException(\"Could not parse index number\");","lastModifiedDate":"2023-08-30"},{"lineNumber":182,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":183,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":184,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":185,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":185}},{"path":"src/main/java/sam/services/parser/TaskParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.services.parser;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddDeadlineCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddToDoCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import sam.commands.Command;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import sam.commands.IncorrectCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import sam.commands.FindCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.commands.AddEventCommand;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import static sam.constants.Message.INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"public class TaskParser {","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the add todo task command.","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" public static Command prepareAddTodo(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" final Pattern TODO_TASK_PATTERN \u003d Pattern.compile(\"(?\u003cdescription\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d TODO_TASK_PATTERN.matcher(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" // Validate arg string format","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, AddToDoCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" String description \u003d matcher.group(\"description\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, AddToDoCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" return new AddToDoCommand(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the add deadline task command.","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" public static Command prepareAddDeadline(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" final Pattern DEADLINE_TASK_PATTERN \u003d Pattern.compile(\"(?\u003cdescription\u003e.*) /by (?\u003cby\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d DEADLINE_TASK_PATTERN.matcher(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" // Validate arg string format","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, AddDeadlineCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" String description \u003d matcher.group(\"description\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" String by \u003d matcher.group(\"by\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" return new AddDeadlineCommand(description, DateTimeParser.parseDate(by));","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the add event task command.","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" public static Command prepareAddEvent(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" final Pattern EVENT_TASK_PATTERN \u003d Pattern.compile(\"(?\u003cdescription\u003e.*) /from (?\u003cfrom\u003e.*) /to (?\u003cto\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d EVENT_TASK_PATTERN.matcher(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" // Validate arg string format","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, AddEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" String description \u003d matcher.group(\"description\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" String from \u003d matcher.group(\"from\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" String to \u003d matcher.group(\"to\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" return new AddEventCommand(description, DateTimeParser.parseDate(from), DateTimeParser.parseDate(to));","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" * Parses arguments in the context of the find task command.","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":" * @param args full command args string","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" * @return the prepared command","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":" public static Command prepareFind(String args) {","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" final Pattern FIND_TASK_PATTERN \u003d Pattern.compile(\"(?\u003ckeyword\u003e.*)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" final Matcher matcher \u003d FIND_TASK_PATTERN.matcher(args);","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" // Validate arg string format","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" String keyword \u003d matcher.group(\"keyword\").trim();","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" if (keyword.equals(\"\")) {","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" return new IncorrectCommand(String.format(INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" return new FindCommand(keyword);","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":93}},{"path":"src/main/java/sam/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" * Represents a Deadline in the Task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"))","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" return \"D \" + super.toFileString() + \" | \" + this.by;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":27}},{"path":"src/main/java/sam/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" * Represents an Event in the Task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" return \"[E]\" + super.toString() + \" (from: \"","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\")) + \", to: \"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\")) + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" return \"E \" + super.toFileString() + \" | \" + this.from + \" to \" + this.to;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":30}},{"path":"src/main/java/sam/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-12"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import java.util.List;","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" * Represents a Task.","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"public class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" protected String description;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" protected List\u003cString\u003e tags;","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" this.tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" * Adds a tag to the task.","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-12"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" * @param tag The tag to add (e.g., \"#fun\").","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" public void addTag(String tag) {","lastModifiedDate":"2023-09-12"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" tags.add(tag);","lastModifiedDate":"2023-09-12"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" * Adds a list of tags to the task.","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" *","lastModifiedDate":"2023-09-12"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" * @param newTags The list of tags to add (e.g., [\"#fun\", \"#important\"]).","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":" public void addTags(List\u003cString\u003e newTags) {","lastModifiedDate":"2023-09-12"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" tags.addAll(newTags);","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" return this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" * Represents the task\u0027s status when printing.","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(\"[\").append(getStatusIcon()).append(\"] \").append(this.description);","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" // Append tags, if any","lastModifiedDate":"2023-09-12"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" if (!tags.isEmpty()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(\" \");","lastModifiedDate":"2023-09-12"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" for (String tag : tags) {","lastModifiedDate":"2023-09-12"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(tag).append(\" \");","lastModifiedDate":"2023-09-12"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-12"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" /**","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" * Represents the task\u0027s encoded format in the hard disk.","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-12"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(\"| \").append(this.isDone ? \"1\" : \"0\").append(\" | \").append(this.description);","lastModifiedDate":"2023-09-12"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":" // Append tags, if any","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" if (!tags.isEmpty()) {","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(\" | Tags: \");","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" for (String tag : tags) {","lastModifiedDate":"2023-09-12"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" stringBuilder.append(tag).append(\" \");","lastModifiedDate":"2023-09-12"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-12"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":90}},{"path":"src/main/java/sam/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam.tasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"/**","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":" * Represents a ToDo in the Task list.","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":" */","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":" super(description);","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public String toString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" return \"T \" + super.toFileString();","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":20}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"\u003cfx:root xmlns:fx\u003d\"http://javafx.com/fxml/1\" alignment\u003d\"TOP_RIGHT\" maxWidth\u003d\"650.0\" minWidth\u003d\"650.0\"","lastModifiedDate":"2023-09-26"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\"\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" \u003cText fx:id\u003d\"dialog\" text\u003d\"Label\"/\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":17}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"680.0\" minHeight\u003d\"-Infinity\" minWidth\u003d\"680.0\" prefHeight\u003d\"800.0\" prefWidth\u003d\"650.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"sam.gui.MainWindow\"\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" \u003cTextField fx:id\u003d\"userInput\" onAction\u003d\"#handleUserInput\"","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" prefHeight\u003d\"41.0\" prefWidth\u003d\"400.0\"","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" AnchorPane.bottomAnchor\u003d\"1.0\" AnchorPane.leftAnchor\u003d\"1.0\" AnchorPane.rightAnchor\u003d\"80.0\" /\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" \u003cButton fx:id\u003d\"sendButton\" text\u003d\"Send\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\"","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\"","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" AnchorPane.bottomAnchor\u003d\"1.0\" AnchorPane.rightAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" vvalue\u003d\"1.0\" AnchorPane.topAnchor\u003d\"0.0\" AnchorPane.rightAnchor\u003d\"0.0\"","lastModifiedDate":"2023-09-26"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" AnchorPane.bottomAnchor\u003d\"45.0\" AnchorPane.leftAnchor\u003d\"0.0\" \u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" AnchorPane.rightAnchor\u003d\"0.0\" AnchorPane.leftAnchor\u003d\"0.0\" /\u003e","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"m1oojv":24}},{"path":"src/test/java/sam/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":" public void toString_savedInTaskList_correctFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":" Deadline deadline \u003d new Deadline(\"Return books\", LocalDateTime.of(2023, 11,","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":" 15, 8, 0));","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":" assertEquals(deadline.toString(), \"[D][ ] Return books (by: Nov 15 2023 08:00 am)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":" public void toFileString_savedInHardDisk_correctFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":" Deadline deadline \u003d new Deadline(\"Return books\", LocalDateTime.of(2023, 11,","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":" 15, 8, 0));","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":" assertEquals(deadline.toFileString(), \"D | 0 | Return books | 2023-11-15T08:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" public void markTask_toString_savedInTaskList_correctFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":" Deadline deadline \u003d new Deadline(\"Return books\", LocalDateTime.of(2023, 11,","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":" 15, 8, 0));","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" assertEquals(deadline.toString(), \"[D][X] Return books (by: Nov 15 2023 08:00 am)\");","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" public void markTask_toFileString_savedInHardDisk_correctFormat() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" Deadline deadline \u003d new Deadline(\"Return books\", LocalDateTime.of(2023, 11,","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" 15, 8, 0));","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":" assertEquals(deadline.toFileString(), \"D | 1 | Return books | 2023-11-15T08:00\");","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":40}},{"path":"src/test/java/sam/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"package sam;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"import org.junit.jupiter.api.AfterAll;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"import sam.services.Storage;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"import sam.services.TaskList;","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"import sam.services.parser.DateTimeParser;","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Deadline;","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Event;","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.Task;","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"import sam.tasks.ToDo;","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"import java.io.File;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"m1oojv"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"m1oojv"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"m1oojv"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"m1oojv"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"m1oojv"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"m1oojv"},"content":" private TaskList validTasks;","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"m1oojv"},"content":" private static final String TEST_FILE_VALID \u003d \"testdata/valid.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"m1oojv"},"content":" private static final String TEST_FILE_TEST \u003d \"testdata/test.txt\";","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"m1oojv"},"content":" @BeforeEach","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"m1oojv"},"content":" public void setUp() throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"m1oojv"},"content":" validTasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"m1oojv"},"content":" validTasks.addTask(new ToDo(\"go to zoo\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":33,"author":{"gitId":"m1oojv"},"content":" validTasks.addTask(new Deadline(\"submit assignment\", DateTimeParser.parseDate(\"2023-11-15 0800\")));","lastModifiedDate":"2023-09-19"},{"lineNumber":34,"author":{"gitId":"m1oojv"},"content":" validTasks.addTask(new Event(\"holiday in Germany\", DateTimeParser.parseDate(\"2019-11-15 0800\"),","lastModifiedDate":"2023-09-19"},{"lineNumber":35,"author":{"gitId":"m1oojv"},"content":" DateTimeParser.parseDate(\"2023-12-15 0800\")));","lastModifiedDate":"2023-09-19"},{"lineNumber":36,"author":{"gitId":"m1oojv"},"content":" File file \u003d new File(TEST_FILE_VALID);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"m1oojv"},"content":" File directory \u003d file.getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"m1oojv"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"m1oojv"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":42,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"m1oojv"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"m1oojv"},"content":" for (Task task : validTasks.getTasks()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"m1oojv"},"content":" fileWriter.write(task.toFileString() + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"m1oojv"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"m1oojv"},"content":" public void loadTasksFromHardDisk() throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"m1oojv"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":53,"author":{"gitId":"m1oojv"},"content":" Storage storage \u003d new Storage(TEST_FILE_VALID);","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"m1oojv"},"content":" storage.loadTasksFromFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"m1oojv"},"content":" assertEquals(tasks.listTasks(), validTasks.listTasks());","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"m1oojv"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"m1oojv"},"content":" public void saveTasksToHardDisk() throws Exception {","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"m1oojv"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(new ToDo(\"go to zoo\"));","lastModifiedDate":"2023-09-19"},{"lineNumber":62,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(new Deadline(\"submit assignment\", DateTimeParser.parseDate(\"2023-11-15 0800\")));","lastModifiedDate":"2023-09-19"},{"lineNumber":63,"author":{"gitId":"m1oojv"},"content":" tasks.addTask(new Event(\"holiday in Germany\", DateTimeParser.parseDate(\"2019-11-15 0800\"),","lastModifiedDate":"2023-09-19"},{"lineNumber":64,"author":{"gitId":"m1oojv"},"content":" DateTimeParser.parseDate(\"2023-12-15 0800\")));","lastModifiedDate":"2023-09-19"},{"lineNumber":65,"author":{"gitId":"m1oojv"},"content":" Storage storage \u003d new Storage(TEST_FILE_TEST);","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"m1oojv"},"content":" storage.saveTasksToFile(tasks);","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"m1oojv"},"content":" String content1 \u003d readFileContent(TEST_FILE_VALID);","lastModifiedDate":"2023-08-30"},{"lineNumber":68,"author":{"gitId":"m1oojv"},"content":" String content2 \u003d readFileContent(TEST_FILE_TEST);","lastModifiedDate":"2023-08-30"},{"lineNumber":69,"author":{"gitId":"m1oojv"},"content":" assertEquals(content1, content2);","lastModifiedDate":"2023-08-30"},{"lineNumber":70,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":71,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":72,"author":{"gitId":"m1oojv"},"content":" @AfterAll","lastModifiedDate":"2023-08-30"},{"lineNumber":73,"author":{"gitId":"m1oojv"},"content":" public static void tearDown() {","lastModifiedDate":"2023-08-30"},{"lineNumber":74,"author":{"gitId":"m1oojv"},"content":" File directory \u003d new File(TEST_FILE_VALID).getParentFile();","lastModifiedDate":"2023-08-30"},{"lineNumber":75,"author":{"gitId":"m1oojv"},"content":" deleteDirectory(directory);","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":77,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":78,"author":{"gitId":"m1oojv"},"content":" private static void deleteDirectory(File directory) {","lastModifiedDate":"2023-08-30"},{"lineNumber":79,"author":{"gitId":"m1oojv"},"content":" if (directory.isDirectory()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":80,"author":{"gitId":"m1oojv"},"content":" File[] files \u003d directory.listFiles();","lastModifiedDate":"2023-08-30"},{"lineNumber":81,"author":{"gitId":"m1oojv"},"content":" if (files !\u003d null) {","lastModifiedDate":"2023-08-30"},{"lineNumber":82,"author":{"gitId":"m1oojv"},"content":" for (File file : files) {","lastModifiedDate":"2023-08-30"},{"lineNumber":83,"author":{"gitId":"m1oojv"},"content":" if (file.isDirectory()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":84,"author":{"gitId":"m1oojv"},"content":" deleteDirectory(file);","lastModifiedDate":"2023-08-30"},{"lineNumber":85,"author":{"gitId":"m1oojv"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":86,"author":{"gitId":"m1oojv"},"content":" file.delete();","lastModifiedDate":"2023-08-30"},{"lineNumber":87,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":88,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":89,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":90,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":91,"author":{"gitId":"m1oojv"},"content":" directory.delete();","lastModifiedDate":"2023-08-30"},{"lineNumber":92,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":93,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"m1oojv"},"content":" private String readFileContent(String filePath) throws IOException {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"m1oojv"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"m1oojv"},"content":" byte[] fileBytes \u003d Files.readAllBytes(path);","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"m1oojv"},"content":" return new String(fileBytes);","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"m1oojv"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"m1oojv"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"m1oojv"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":100}},{"path":"test-test/test.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"T | 0 | buy book","lastModifiedDate":"2023-09-12"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"D | 0 | return book | 2023-11-15T08:00","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"E | 0 | pool party | 2019-11-15T08:00 to 2023-11-15T08:00","lastModifiedDate":"2023-09-12"}],"authorContributionMap":{"m1oojv":3}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"T | 0 | go to the zoo","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"m1oojv":1}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"m1oojv"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"m1oojv"},"content":"todo borrow book","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"m1oojv"},"content":"deadline return book /by 2019-10-15","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"m1oojv"},"content":"event project meeting /from 2/12/2019 1600 /to 2/12/2019 1800","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"m1oojv"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"m1oojv"},"content":"mark 1","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"m1oojv"},"content":"mark 4","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"m1oojv"},"content":"list","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"m1oojv"},"content":"unmark 1","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"m1oojv"},"content":"delete 4","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"m1oojv"},"content":"delete 3","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"m1oojv"},"content":"delete 2","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"m1oojv"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"m1oojv"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"m1oojv":14}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"m1oojv"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/sam/*.java","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"m1oojv"},"content":"java -classpath ../bin sam.Sam \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"m1oojv":2,"-":36}}] diff --git a/m1oojv_ip_master/commits.json b/m1oojv_ip_master/commits.json index 84792fdf..a842b12f 100644 --- a/m1oojv_ip_master/commits.json +++ b/m1oojv_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"m1oojv":[{"date":"2023-08-21","commitResults":[{"hash":"c989e59aee2acc73619d9c60186163a3422cb709","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit: Give your chatbot a new name, Implement an initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"e48dc3cd25b48c910d609544b4bdbca7a192333d","isMergeCommit":false,"messageTitle":"Level 1. Echo: echos commands entered by the user, and exits when the user types the command bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"eb56432783300b0e61210591f5dca0f261762806","isMergeCommit":false,"messageTitle":"Level 1: Remove unnecessary \\n commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"24be9ac7a96ba3d8aac6cc839f30127f75c9abe5","isMergeCommit":false,"messageTitle":"Level 2. Add, List Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":36}}},{"hash":"f8402c1a762ae9f9e54f67e1df0eb656462579bd","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":6}}},{"hash":"6ec52b39546b4a15e10879777b40b5e27b2b93a7","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines Add support for tracking three types of tasks: ToDos: tasks without any date/time attached to it Deadlines: tasks that need to be done before a specific date/time Events: tasks that start at a specific date/time and ends at a specific date/time","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":9}}},{"hash":"0a4f8e73363fc0c601935755e0ce6940f4a55e67","isMergeCommit":false,"messageTitle":"Test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":2,"deletions":3}}},{"hash":"eb37fb719500c8f48c0d68221e4331cf78a295f2","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors Teach the chatbot to deal with errors such as incorrect inputs entered by the user.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":61,"deletions":52}}},{"hash":"e4ea5a4fd421da6a2f430105054630c3f4372041","isMergeCommit":false,"messageTitle":"Level 6. Delete Add support for deleting tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":40,"deletions":27}}},{"hash":"1d2604f38b8b3d22518ce614ae6120456b329101","isMergeCommit":false,"messageTitle":"Use Enumerations","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":20,"deletions":9}}}]},{"date":"2023-08-28","commitResults":[{"hash":"4ec3ae913d1a672f47fa8439003a00055926d432","isMergeCommit":false,"messageTitle":"Level 7. Save Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up. You may hard-code the file name and relative path from the project root e.g., ./data/duke.txt Your code must handle the case where the data file doesn\u0027t exist at the start. Stretch goal: Handle the situation of the data file being corrupted (i.e., content not in the expected format).","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":135,"deletions":6}}},{"hash":"1586c91def1639b7902ecb6a8a9ac83d07ca76d3","isMergeCommit":true,"messageTitle":"Merge pull request #1 from m1oojv/branch-Level-7","messageBody":"Level 7. Save","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"cc0ebdf9ccdc3f7bf9c6e32434287e75b6ba0185","isMergeCommit":false,"messageTitle":"Update to Level 8. Dates and Times Teach the chatbot how to understand dates and times. For example, if the command is deadline return book /by 2/12/2019 1800, the chatbot should understand 2/12/2019 1800 as 2nd of December 2019, 6pm, instead of treating it as just a String.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":61,"deletions":12}}},{"hash":"e4f798e3692aff643e40cfcb6895021ff6b4a08e","isMergeCommit":true,"messageTitle":"Merge pull request #2 from m1oojv/branch-Level-8","messageBody":"Update to Level 8. Dates and Times","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"a3981fa9c653fec75381b71d31c487552d12e134","isMergeCommit":false,"messageTitle":"Update files to practice better OOP and organize into packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":15},"java":{"insertions":885,"deletions":331},"sh":{"insertions":1,"deletions":1}}},{"hash":"6eb7ff6dc087ad7dcfd09686d81de93da8fe823f","isMergeCommit":true,"messageTitle":"Merge pull request #3 from m1oojv/branch-a-moreoop","messageBody":"Update files to practice better OOP and organize into packages","fileTypesAndContributionMap":{}},{"hash":"ef0672c0b4484254584f82aedee62e7a3c2e96d7","isMergeCommit":false,"messageTitle":"Fix test files","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":7}}},{"hash":"8951020b78fdec2227c0ff5d51d75661b0133447","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-a-gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f941d2759ef6dbfc833091de17378e548f6bb283","isMergeCommit":false,"messageTitle":"Update packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":937}}},{"hash":"13337d8dba32c6353f73b6a662f7a372e74a5efb","isMergeCommit":false,"messageTitle":"Update build gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"41615ab0afb323abefdea2c4d9fce6234a1a98c1","isMergeCommit":true,"messageTitle":"Merge pull request #4 from m1oojv/branch-a-gradle","messageBody":"A-Gradle","tags":["A-Jar","A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c690ab9d98395e896e8d2ebbfce494a3ec458321","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":3}}},{"hash":"357e34193ad74f82f8c5b35767cfef5a9039c5b2","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":1087,"deletions":0}}},{"hash":"59b437e83ee46245083117e2f635fb750ff6da15","isMergeCommit":false,"messageTitle":"Add JavaDoc for Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"82b952c30d5e5dcdd82c20ca02ccb66ae9add966","isMergeCommit":false,"messageTitle":"Update code to fulfill Standards/Conventions","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":125}}},{"hash":"1dfe85621652d3a08b218558a6746bf736b9e0ff","isMergeCommit":false,"messageTitle":"Update code to fulfill Standards/Conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"1458184acb67f541c418bd5646fa07a9c3e41cbe","isMergeCommit":false,"messageTitle":"Implement Level 9. Find Give users a way to find a task by searching for a keyword.","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":115,"deletions":25},"sh":{"insertions":1,"deletions":1}}},{"hash":"9af17d12bbaa74501c553a6a9caec97e864f6dd9","isMergeCommit":true,"messageTitle":"Merge pull request #5 from m1oojv/branch-Level-9","messageBody":"Implement Level 9. Find","fileTypesAndContributionMap":{}},{"hash":"71e325ee1012f934872ad9986c85c5f357f35874","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a653e7ca98867760ad399b758826d926ee562b3d","isMergeCommit":true,"messageTitle":"Merge pull request #6 from m1oojv/branch-A-CodingStandard","messageBody":"Merge Branch A -coding-standard","fileTypesAndContributionMap":{}},{"hash":"39d57564ee789d3ce8b2ecb202eb558bfdf6bd72","isMergeCommit":false,"messageTitle":"Resolve runtest.sh bugs of failed tests","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":4,"deletions":5},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-06","commitResults":[{"hash":"9e63aeffad0ccf89b1df343eb2315ac64a2d3435","isMergeCommit":false,"messageTitle":"Add Level 10. GUI Add a GUI to the chatbot. Use the JavaFX technology to implement the GUI.","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"txt":{"insertions":2,"deletions":0},"fxml":{"insertions":37,"deletions":0},"java":{"insertions":310,"deletions":70}}},{"hash":"504dcc6866aa541490400cd0cabccbdf858b70f5","isMergeCommit":true,"messageTitle":"Merge pull request #7 from m1oojv/branch-Level-10","messageBody":"Add Level 10. GUI","tags":["A-Varargs","A-Jar2"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-12","commitResults":[{"hash":"df25f62858063c090da9968350dd5822ac346007","isMergeCommit":false,"messageTitle":"Update A-Assertions There is no assertions in the code","messageBody":"Assertions are used to define assumptions about the program state so that the runtime can verify them.\nAssertions serve a valuable purpose by aiding programmers\nin verifying the accuracy of our assumptions and\nensuring that no invariants are breached.\n\nWe should incorporate assertions into the code in areas\nwhere it\u0027s crucial to validate these assumptions.\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":6,"deletions":10}}},{"hash":"077e0563a2fa09f8fe316250df62b659e468028f","isMergeCommit":true,"messageTitle":"Merge pull request #8 from m1oojv/branch-A-Assertions","messageBody":"Update A-Assertions","tags":["A-Assertions"],"fileTypesAndContributionMap":{}},{"hash":"f0dcc07b135eeff78034501fc1677af1dbd54897","isMergeCommit":false,"messageTitle":"Add Comments to Message.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":2}}},{"hash":"8684066f0850ac7e3ba86e7d6283494a4d358120","isMergeCommit":false,"messageTitle":"Update javadocs in Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"f23ff64f913acd68e133cc2756324ca6c4225046","isMergeCommit":false,"messageTitle":"Update to correct some code quality violations","messageBody":"","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"6be4ec0172283faf3ad2e9995d081561464f7ff4","isMergeCommit":true,"messageTitle":"Merge pull request #9 from m1oojv/branch-A-CodeQuality","messageBody":"Branch a code quality","fileTypesAndContributionMap":{}},{"hash":"61179827aaf63324e060a4bb0fd7d8a4eadc40d7","isMergeCommit":false,"messageTitle":"Feat: Add C-Tagging There is no way to tag tasks in the code","messageBody":"Tagging tasks is a useful organizational feature\nin task management systems. Tags allow us to\ncategorize tasks based on different criteria,\nsuch as priority, project, context, or location.\n\nLet\u0027s add this new feature of tagging tasks in our task list\nfor a better user experience\n","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":146,"deletions":3}}},{"hash":"15206ed678e1e325d77b09be731f3d6c2e815fe4","isMergeCommit":true,"messageTitle":"Merge pull request #10 from m1oojv/branch-BCD-Extension","messageBody":"Feat: Add C-Tagging","fileTypesAndContributionMap":{}}]},{"date":"2023-09-19","commitResults":[{"hash":"2ceedce9fc897577670bc0fd2cf9a3d6e77a7e9b","isMergeCommit":false,"messageTitle":"Minor updates to comments and tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":8}}},{"hash":"34a147a831b44ec1e2490973efcd29ab625217d5","isMergeCommit":false,"messageTitle":"Dummy names","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"2c3beec31fcb9444d2b2ce69f957b8986d3f80e0","isMergeCommit":false,"messageTitle":"Correct naming of files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"441be127496afcc1c8a00a45a671ab73b41cf741","isMergeCommit":true,"messageTitle":"Merge pull request #12 from m1oojv/branch-fix-naming","messageBody":"Fix: Branch fix naming of files","fileTypesAndContributionMap":{}},{"hash":"e56860d7812d4bdff9b41f14fd2f7717a069dffa","isMergeCommit":false,"messageTitle":"Feat: Add User Guide","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":19,"deletions":3},"md":{"insertions":301,"deletions":11}}},{"hash":"69e4dcddb51cad004535e6422dbb1452bf8ec057","isMergeCommit":false,"messageTitle":"Fix: Fix User Guide demo picture","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"a6987d032282150efcdafc2692d40e17c2d63b53","isMergeCommit":false,"messageTitle":"Fix: Fix Gradle build file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-22","commitResults":[{"hash":"ea9e4ca1057aeab5a0cf4976b1aec11fb0277873","isMergeCommit":false,"messageTitle":"chore: Fix Gradle build file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":14,"deletions":6}}},{"hash":"f95645b8be6cff3d7077d9c0ed87bfb6f97ab959","isMergeCommit":false,"messageTitle":"style: Correct styling of certain javadocs","messageBody":"","tags":["A-Releases"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"m1oojv":{"java":1823,"md":294,"fxml":37,"sh":2,"bat":0,"gradle":16,"txt":23}},"authorContributionVariance":{"m1oojv":412172.2},"authorDisplayNameMap":{"m1oojv":"CS2103T-T10-2 MEGA..VERN"}} +{"authorDailyContributionsMap":{"m1oojv":[{"date":"2023-08-21","commitResults":[{"hash":"c989e59aee2acc73619d9c60186163a3422cb709","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit: Give your chatbot a new name, Implement an initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"e48dc3cd25b48c910d609544b4bdbca7a192333d","isMergeCommit":false,"messageTitle":"Level 1. Echo: echos commands entered by the user, and exits when the user types the command bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"eb56432783300b0e61210591f5dca0f261762806","isMergeCommit":false,"messageTitle":"Level 1: Remove unnecessary \\n commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"24be9ac7a96ba3d8aac6cc839f30127f75c9abe5","isMergeCommit":false,"messageTitle":"Level 2. Add, List Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":36}}},{"hash":"f8402c1a762ae9f9e54f67e1df0eb656462579bd","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":6}}},{"hash":"6ec52b39546b4a15e10879777b40b5e27b2b93a7","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines Add support for tracking three types of tasks: ToDos: tasks without any date/time attached to it Deadlines: tasks that need to be done before a specific date/time Events: tasks that start at a specific date/time and ends at a specific date/time","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":9}}},{"hash":"0a4f8e73363fc0c601935755e0ce6940f4a55e67","isMergeCommit":false,"messageTitle":"Test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":2,"deletions":3}}},{"hash":"eb37fb719500c8f48c0d68221e4331cf78a295f2","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors Teach the chatbot to deal with errors such as incorrect inputs entered by the user.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":61,"deletions":52}}},{"hash":"e4ea5a4fd421da6a2f430105054630c3f4372041","isMergeCommit":false,"messageTitle":"Level 6. Delete Add support for deleting tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":40,"deletions":27}}},{"hash":"1d2604f38b8b3d22518ce614ae6120456b329101","isMergeCommit":false,"messageTitle":"Use Enumerations","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":20,"deletions":9}}}]},{"date":"2023-08-28","commitResults":[{"hash":"4ec3ae913d1a672f47fa8439003a00055926d432","isMergeCommit":false,"messageTitle":"Level 7. Save Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up. You may hard-code the file name and relative path from the project root e.g., ./data/duke.txt Your code must handle the case where the data file doesn\u0027t exist at the start. Stretch goal: Handle the situation of the data file being corrupted (i.e., content not in the expected format).","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":135,"deletions":6}}},{"hash":"1586c91def1639b7902ecb6a8a9ac83d07ca76d3","isMergeCommit":true,"messageTitle":"Merge pull request #1 from m1oojv/branch-Level-7","messageBody":"Level 7. Save","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-29","commitResults":[{"hash":"cc0ebdf9ccdc3f7bf9c6e32434287e75b6ba0185","isMergeCommit":false,"messageTitle":"Update to Level 8. Dates and Times Teach the chatbot how to understand dates and times. For example, if the command is deadline return book /by 2/12/2019 1800, the chatbot should understand 2/12/2019 1800 as 2nd of December 2019, 6pm, instead of treating it as just a String.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":61,"deletions":12}}},{"hash":"e4f798e3692aff643e40cfcb6895021ff6b4a08e","isMergeCommit":true,"messageTitle":"Merge pull request #2 from m1oojv/branch-Level-8","messageBody":"Update to Level 8. Dates and Times","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-30","commitResults":[{"hash":"a3981fa9c653fec75381b71d31c487552d12e134","isMergeCommit":false,"messageTitle":"Update files to practice better OOP and organize into packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":15},"java":{"insertions":885,"deletions":331},"sh":{"insertions":1,"deletions":1}}},{"hash":"6eb7ff6dc087ad7dcfd09686d81de93da8fe823f","isMergeCommit":true,"messageTitle":"Merge pull request #3 from m1oojv/branch-a-moreoop","messageBody":"Update files to practice better OOP and organize into packages","fileTypesAndContributionMap":{}},{"hash":"ef0672c0b4484254584f82aedee62e7a3c2e96d7","isMergeCommit":false,"messageTitle":"Fix test files","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":7}}},{"hash":"8951020b78fdec2227c0ff5d51d75661b0133447","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-a-gradle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f941d2759ef6dbfc833091de17378e548f6bb283","isMergeCommit":false,"messageTitle":"Update packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":937}}},{"hash":"13337d8dba32c6353f73b6a662f7a372e74a5efb","isMergeCommit":false,"messageTitle":"Update build gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"41615ab0afb323abefdea2c4d9fce6234a1a98c1","isMergeCommit":true,"messageTitle":"Merge pull request #4 from m1oojv/branch-a-gradle","messageBody":"A-Gradle","tags":["A-Jar","A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c690ab9d98395e896e8d2ebbfce494a3ec458321","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":3}}},{"hash":"357e34193ad74f82f8c5b35767cfef5a9039c5b2","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":1087,"deletions":0}}},{"hash":"59b437e83ee46245083117e2f635fb750ff6da15","isMergeCommit":false,"messageTitle":"Add JavaDoc for Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"82b952c30d5e5dcdd82c20ca02ccb66ae9add966","isMergeCommit":false,"messageTitle":"Update code to fulfill Standards/Conventions","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":125}}},{"hash":"1dfe85621652d3a08b218558a6746bf736b9e0ff","isMergeCommit":false,"messageTitle":"Update code to fulfill Standards/Conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"1458184acb67f541c418bd5646fa07a9c3e41cbe","isMergeCommit":false,"messageTitle":"Implement Level 9. Find Give users a way to find a task by searching for a keyword.","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":115,"deletions":25},"sh":{"insertions":1,"deletions":1}}},{"hash":"9af17d12bbaa74501c553a6a9caec97e864f6dd9","isMergeCommit":true,"messageTitle":"Merge pull request #5 from m1oojv/branch-Level-9","messageBody":"Implement Level 9. Find","fileTypesAndContributionMap":{}},{"hash":"71e325ee1012f934872ad9986c85c5f357f35874","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a653e7ca98867760ad399b758826d926ee562b3d","isMergeCommit":true,"messageTitle":"Merge pull request #6 from m1oojv/branch-A-CodingStandard","messageBody":"Merge Branch A -coding-standard","fileTypesAndContributionMap":{}},{"hash":"39d57564ee789d3ce8b2ecb202eb558bfdf6bd72","isMergeCommit":false,"messageTitle":"Resolve runtest.sh bugs of failed tests","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":4,"deletions":5},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-06","commitResults":[{"hash":"9e63aeffad0ccf89b1df343eb2315ac64a2d3435","isMergeCommit":false,"messageTitle":"Add Level 10. GUI Add a GUI to the chatbot. Use the JavaFX technology to implement the GUI.","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"txt":{"insertions":2,"deletions":0},"fxml":{"insertions":37,"deletions":0},"java":{"insertions":310,"deletions":70}}},{"hash":"504dcc6866aa541490400cd0cabccbdf858b70f5","isMergeCommit":true,"messageTitle":"Merge pull request #7 from m1oojv/branch-Level-10","messageBody":"Add Level 10. GUI","tags":["A-Varargs","A-Jar2"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-12","commitResults":[{"hash":"df25f62858063c090da9968350dd5822ac346007","isMergeCommit":false,"messageTitle":"Update A-Assertions There is no assertions in the code","messageBody":"Assertions are used to define assumptions about the program state so that the runtime can verify them.\nAssertions serve a valuable purpose by aiding programmers\nin verifying the accuracy of our assumptions and\nensuring that no invariants are breached.\n\nWe should incorporate assertions into the code in areas\nwhere it\u0027s crucial to validate these assumptions.\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":6,"deletions":10}}},{"hash":"077e0563a2fa09f8fe316250df62b659e468028f","isMergeCommit":true,"messageTitle":"Merge pull request #8 from m1oojv/branch-A-Assertions","messageBody":"Update A-Assertions","tags":["A-Assertions"],"fileTypesAndContributionMap":{}},{"hash":"f0dcc07b135eeff78034501fc1677af1dbd54897","isMergeCommit":false,"messageTitle":"Add Comments to Message.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":2}}},{"hash":"8684066f0850ac7e3ba86e7d6283494a4d358120","isMergeCommit":false,"messageTitle":"Update javadocs in Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"f23ff64f913acd68e133cc2756324ca6c4225046","isMergeCommit":false,"messageTitle":"Update to correct some code quality violations","messageBody":"","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"6be4ec0172283faf3ad2e9995d081561464f7ff4","isMergeCommit":true,"messageTitle":"Merge pull request #9 from m1oojv/branch-A-CodeQuality","messageBody":"Branch a code quality","fileTypesAndContributionMap":{}},{"hash":"61179827aaf63324e060a4bb0fd7d8a4eadc40d7","isMergeCommit":false,"messageTitle":"Feat: Add C-Tagging There is no way to tag tasks in the code","messageBody":"Tagging tasks is a useful organizational feature\nin task management systems. Tags allow us to\ncategorize tasks based on different criteria,\nsuch as priority, project, context, or location.\n\nLet\u0027s add this new feature of tagging tasks in our task list\nfor a better user experience\n","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":146,"deletions":3}}},{"hash":"15206ed678e1e325d77b09be731f3d6c2e815fe4","isMergeCommit":true,"messageTitle":"Merge pull request #10 from m1oojv/branch-BCD-Extension","messageBody":"Feat: Add C-Tagging","fileTypesAndContributionMap":{}}]},{"date":"2023-09-19","commitResults":[{"hash":"2ceedce9fc897577670bc0fd2cf9a3d6e77a7e9b","isMergeCommit":false,"messageTitle":"Minor updates to comments and tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":8}}},{"hash":"34a147a831b44ec1e2490973efcd29ab625217d5","isMergeCommit":false,"messageTitle":"Dummy names","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"2c3beec31fcb9444d2b2ce69f957b8986d3f80e0","isMergeCommit":false,"messageTitle":"Correct naming of files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"441be127496afcc1c8a00a45a671ab73b41cf741","isMergeCommit":true,"messageTitle":"Merge pull request #12 from m1oojv/branch-fix-naming","messageBody":"Fix: Branch fix naming of files","fileTypesAndContributionMap":{}},{"hash":"e56860d7812d4bdff9b41f14fd2f7717a069dffa","isMergeCommit":false,"messageTitle":"Feat: Add User Guide","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":19,"deletions":3},"md":{"insertions":301,"deletions":11}}},{"hash":"69e4dcddb51cad004535e6422dbb1452bf8ec057","isMergeCommit":false,"messageTitle":"Fix: Fix User Guide demo picture","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"a6987d032282150efcdafc2692d40e17c2d63b53","isMergeCommit":false,"messageTitle":"Fix: Fix Gradle build file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-22","commitResults":[{"hash":"ea9e4ca1057aeab5a0cf4976b1aec11fb0277873","isMergeCommit":false,"messageTitle":"chore: Fix Gradle build file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":14,"deletions":6}}},{"hash":"f95645b8be6cff3d7077d9c0ed87bfb6f97ab959","isMergeCommit":false,"messageTitle":"style: Correct styling of certain javadocs","messageBody":"","tags":["A-Releases"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":4}}}]},{"date":"2023-09-26","commitResults":[{"hash":"e79319bbacb0d07c264f83825f57503e0b395ccc","isMergeCommit":false,"messageTitle":"feat: Add responsive height of chat bot and wrap text boxes","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":14,"deletions":10},"java":{"insertions":9,"deletions":2}}},{"hash":"b3a23e1a5352756304f5be8a0c90b67161a6034f","isMergeCommit":false,"messageTitle":"feat: Update duke","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":5}}},{"hash":"6db33d07f596474660d3bb69f443ff9083c8c816","isMergeCommit":false,"messageTitle":"feat: Update text box of user to align right","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}},{"hash":"4d5cf8508843f7518395d0886f094abfe1d5dec9","isMergeCommit":true,"messageTitle":"Merge pull request #13 from m1oojv/branch-gui-changes","messageBody":"feat: Update text box of user to align right","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"m1oojv":{"java":1840,"md":294,"fxml":41,"sh":2,"bat":0,"gradle":16,"txt":18}},"authorContributionVariance":{"m1oojv":372889.3},"authorDisplayNameMap":{"m1oojv":"CS2103T-T10-2 MEGA..VERN"}} diff --git a/peiran18_ip_master/authorship.json b/peiran18_ip_master/authorship.json index 3a140678..bc968cea 100644 --- a/peiran18_ip_master/authorship.json +++ b/peiran18_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":"peiran18"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"checkstyle {","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"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":"peiran18"},"content":" mainClass.set(\"potato.Launcher\")","lastModifiedDate":"2023-09-18"},{"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":"peiran18"},"content":" archiveBaseName \u003d \"potato\"","lastModifiedDate":"2023-09-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"peiran18":13,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# User Guide","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"Potato is a chatbot who helps you keep track of your tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"Words in `UPPER_CASE` are the parameters to be supplied by the user.","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"### Adding a todo task: todo","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"Adds a todo task to the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"Format: todo DESCRIPTION","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"Example: todo read book","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"### Adding a deadline task: deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"Adds a deadline task with a due date to the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"Format: todo DESCRIPTION /by DUEDATE","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":"NOTE: DUEDATE must be given in YYYY-MM-DD format.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":"Example: todo return book /by 2023-09-19","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":"### Adding a event task: event","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"Adds a event task with a start and end date to the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"Format: todo /DESCRIPTION /from START /to END","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":"NOTE: START and END must be given in YYYY-MM-DD format.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":"Example: event library programme /from 2023-12-12 /to 2023-12-15","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":"### Deleting a task: delete","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":"Deletes the specified task from the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":"Format: delete INDEX","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":"NOTE: INDEX must be an integer greater than 0.","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":"Example: delete 1 deletes first task on the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":"### Finding a task: find","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":"Finds all tasks that contains the given keyword.","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":"Format: find KEYWORD","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":"Example: find book returns \u0027read book\u0027 and \u0027return book\u0027","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":"### Listing tasks: list","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":"Lists all tasks in the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":"Format: list","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":"### Marking a task: mark","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":"Marks the specified task from the list as completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":"Format: mark INDEX","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":"NOTE: INDEX must be an integer greater than 0.","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":"Example: mark 1 marks first task on the list as completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":"### Unmarking a task: unmark","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":"Unmarks the specified task from the list as not completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"peiran18"},"content":"Format: unmark INDEX","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":73,"author":{"gitId":"peiran18"},"content":"NOTE: INDEX must be an integer greater than 0.","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":75,"author":{"gitId":"peiran18"},"content":"Example: unmark 1 unmarks first task on the list as not completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":77,"author":{"gitId":"peiran18"},"content":"### Setting priority for a task: priority","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":79,"author":{"gitId":"peiran18"},"content":"Sets the priority of the specified task from the list as high, medium, or low.","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":81,"author":{"gitId":"peiran18"},"content":"Format: priority INDEX #LEVEL","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":83,"author":{"gitId":"peiran18"},"content":"NOTE: INDEX must be an integer greater than 0.","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":85,"author":{"gitId":"peiran18"},"content":"Example: priority 1 #high marks the priority of the first task on the list as high.","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":87,"author":{"gitId":"peiran18"},"content":"### Exiting: bye","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":89,"author":{"gitId":"peiran18"},"content":"Exits the programme.","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":91,"author":{"gitId":"peiran18"},"content":"Format: bye","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":93,"author":{"gitId":"peiran18"},"content":"### Saving the data","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":95,"author":{"gitId":"peiran18"},"content":"Data are saved in the hard disk automatically after any command that changes the data. ","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"peiran18"},"content":"There is no need to save manually.","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"peiran18":82,"-":14}},{"path":"src/main/java/potato/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-04"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-04"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"public class DateTime {","lastModifiedDate":"2023-09-04"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" private LocalDate date;","lastModifiedDate":"2023-09-04"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" private String savedDate;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" public DateTime(String date) {","lastModifiedDate":"2023-09-04"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" this.savedDate \u003d date;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" this.date \u003d LocalDate.parse(date);","lastModifiedDate":"2023-09-04"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" public String getDate() {","lastModifiedDate":"2023-09-04"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-04"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-04"}],"authorContributionMap":{"peiran18":17}},{"path":"src/main/java/potato/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-14"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-14"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-14"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-14"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-14"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-14"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-14"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-14"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-14"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" private Label dialog;","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-14"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-17"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-17"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-17"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-17"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-17"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-17"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-17"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-14"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-14"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-14"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" private void flip() {","lastModifiedDate":"2023-09-14"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-14"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-17"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-17"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-17"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-17"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-17"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" public static DialogBox getPotatoDialog(String text, Image img) {","lastModifiedDate":"2023-09-23"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-17"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" db.flip();","lastModifiedDate":"2023-09-14"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" return db;","lastModifiedDate":"2023-09-14"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-14"}],"authorContributionMap":{"peiran18":61}},{"path":"src/main/java/potato/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-14"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-14"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-14"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-14"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-14"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"public class Launcher {","lastModifiedDate":"2023-09-14"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-14"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-14"}],"authorContributionMap":{"peiran18":12}},{"path":"src/main/java/potato/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" * A GUI for Potato using FXML.","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" private Potato potato \u003d new Potato();","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setPotato(potato);","lastModifiedDate":"2023-09-17"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" stage.show();","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-17"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-17"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"peiran18":33}},{"path":"src/main/java/potato/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import javafx.animation.KeyFrame;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import javafx.animation.Timeline;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" private Potato potato;","lastModifiedDate":"2023-09-17"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" private Image potatoImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaPotato.png\"));","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" public void initialize() {","lastModifiedDate":"2023-09-17"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-17"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" public void setPotato(Potato p) {","lastModifiedDate":"2023-09-17"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" potato \u003d p;","lastModifiedDate":"2023-09-17"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" DialogBox.getPotatoDialog(\"Hey GURL I\u0027m Potato!\\n\" + \"How can I help ya?\", potatoImage)","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" );","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-17"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-17"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-17"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" String response \u003d potato.getResponse(input);","lastModifiedDate":"2023-09-17"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-17"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-17"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" DialogBox.getPotatoDialog(response, potatoImage)","lastModifiedDate":"2023-09-23"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" );","lastModifiedDate":"2023-09-17"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" Duration delay \u003d Duration.seconds(3);","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" KeyFrame keyFrame \u003d new KeyFrame(delay, event -\u003e Platform.exit());","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" Timeline timeline \u003d new Timeline(keyFrame);","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" timeline.setCycleCount(1);","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" timeline.play();","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" userInput.clear();","lastModifiedDate":"2023-09-17"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-17"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"peiran18":68}},{"path":"src/main/java/potato/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.command.*;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"public class Parser {","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" return new MarkCommand(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" return new UnmarkCommand(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"delete \")) {","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"find \")) {","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" return new FindCommand(input);","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"priority \")) {","lastModifiedDate":"2023-09-23"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" return new SetPriorityCommand(input);","lastModifiedDate":"2023-09-23"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" return new AddCommand(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":31}},{"path":"src/main/java/potato/Potato.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-04"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.command.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class Potato {","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" private Storage storage;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" private Ui ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" public Potato() {","lastModifiedDate":"2023-09-14"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" storage \u003d new Storage(\"./Potato.txt\");","lastModifiedDate":"2023-09-14"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-04"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" tasks \u003d new TaskList(storage.loadTask());","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" System.out.println(\"here\u0027s the saved list\");","lastModifiedDate":"2023-09-04"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-04"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" System.out.println(\"No saved list\");","lastModifiedDate":"2023-09-04"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-14"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" * You should have your own function to generate a response to user input.","lastModifiedDate":"2023-09-14"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" * Replace this stub with your completed method.","lastModifiedDate":"2023-09-14"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-14"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" String getResponse(String input) {","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" String response \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2023-09-15"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" response +\u003d c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-15"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-15"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" return response;","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"peiran18":40}},{"path":"src/main/java/potato/PotatoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"public class PotatoException extends RuntimeException {","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":" public PotatoException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":" super(message);","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":7}},{"path":"src/main/java/potato/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.File;","lastModifiedDate":"2023-09-04"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-04"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-04"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-04"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-04"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"import potato.task.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" * The Storage class represents a data storage utility for managing tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" * It provides functionality to save tasks to a file and load tasks from a file.","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"public class Storage {","lastModifiedDate":"2023-09-04"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" private String path;","lastModifiedDate":"2023-09-04"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * Constructs a new Storage instance with the specified file path.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" * @param filePath The path to the file where tasks will be stored.","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" path \u003d filePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" * Saves the provided list of tasks to the file specified during initialization.","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" * @param tasks The list of tasks to be saved to the file.","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while writing to the file.","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" public void saveTask(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-09-04"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" FileWriter writer \u003d new FileWriter(path);","lastModifiedDate":"2023-09-04"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-09-04"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" writer.write(t.toSave() + \"\\n\");","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" writer.close();","lastModifiedDate":"2023-09-04"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" * Loads tasks from the file specified during initialization.","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" * @return An ArrayList containing the loaded tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while reading from the file.","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" public ArrayList\u003cTask\u003e loadTask() throws IOException {","lastModifiedDate":"2023-09-04"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-04"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" File file \u003d new File(path);","lastModifiedDate":"2023-09-04"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" if (file.exists()) {","lastModifiedDate":"2023-09-04"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-04"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-04"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-04"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" tasks.add(Task.parseSaved(scanner.nextLine()));","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" scanner.close();","lastModifiedDate":"2023-09-04"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-04"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" System.out.println(\"no file\");","lastModifiedDate":"2023-09-04"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" return tasks;","lastModifiedDate":"2023-09-04"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-04"}],"authorContributionMap":{"peiran18":64}},{"path":"src/main/java/potato/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import potato.task.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" * The TaskList class represents a list of tasks and provides methods","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" * for managing and manipulating those tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"public class TaskList {","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" public TaskList() {","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" * Constructs a TaskList with the provided list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" * @param tasks The list of tasks to initialize the TaskList with.","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" * Marks a task as completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task index to be marked.","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" * @param storage The storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the task has been marked as completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" public String mark(String input, Storage storage) throws IOException {","lastModifiedDate":"2023-09-15"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" int index \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" tasks.get(index).setStatus(true);","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" String s \u003d \"Slayyy such efficiency we love it!\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" + \"Let\u0027s take this off the list!\\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" + tasks.get(index).toString();","lastModifiedDate":"2023-09-15"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" storage.saveTask(tasks);","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" * Unmarks a completed task.","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task index to be unmarked.","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" * @param storage The storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the task has been unmarked.","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" public String unmark(String input, Storage storage) throws IOException {","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" int index \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" tasks.get(index).setStatus(false);","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" String s \u003d \"Ohmah... not you lying to me??\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" + \"This is the last time I\u0027m adding it back for you!\\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" + tasks.get(index).toString();","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" storage.saveTask(tasks);","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task index to be deleted.","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"peiran18"},"content":" * @param storage The storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the task has been deleted.","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"peiran18"},"content":" public String delete(String input, Storage storage) throws IOException {","lastModifiedDate":"2023-09-15"},{"lineNumber":76,"author":{"gitId":"peiran18"},"content":" int index \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-06"},{"lineNumber":77,"author":{"gitId":"peiran18"},"content":" String s \u003d \"NAUR NOT THE DITCHING?!\\n\" + \"It\u0027s a no do for\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":78,"author":{"gitId":"peiran18"},"content":" + tasks.get(index).toString() + \"\\n\" + \"Now there\u0027s only \" + (tasks.size() - 1)","lastModifiedDate":"2023-09-06"},{"lineNumber":79,"author":{"gitId":"peiran18"},"content":" + \" tasks left sistar pls do them.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":80,"author":{"gitId":"peiran18"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-06"},{"lineNumber":81,"author":{"gitId":"peiran18"},"content":" storage.saveTask(tasks);","lastModifiedDate":"2023-09-06"},{"lineNumber":82,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":83,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":84,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":85,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"peiran18"},"content":" * Retrieves a list of all tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"peiran18"},"content":" * @return A string containing a list of all tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"peiran18"},"content":" public String list() {","lastModifiedDate":"2023-09-15"},{"lineNumber":91,"author":{"gitId":"peiran18"},"content":" String s \u003d \"Ok look all you want but they literally won\u0027t do themselves?\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":93,"author":{"gitId":"peiran18"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-10"},{"lineNumber":94,"author":{"gitId":"peiran18"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-09-06"},{"lineNumber":95,"author":{"gitId":"peiran18"},"content":" if (t \u003d\u003d null) {","lastModifiedDate":"2023-09-10"},{"lineNumber":96,"author":{"gitId":"peiran18"},"content":" break;","lastModifiedDate":"2023-09-10"},{"lineNumber":97,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":98,"author":{"gitId":"peiran18"},"content":" count++;","lastModifiedDate":"2023-09-06"},{"lineNumber":99,"author":{"gitId":"peiran18"},"content":" s +\u003d String.valueOf(count) + \".\" + t.toString() + \"\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":101,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":102,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":103,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":104,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":105,"author":{"gitId":"peiran18"},"content":" * Finds tasks containing a specified keyword in their description.","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the keyword to search for.","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"peiran18"},"content":" * @return A string containing a list of tasks matching the keyword.","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"peiran18"},"content":" public String find(String input) {","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"peiran18"},"content":" String keyword \u003d input.substring(5);","lastModifiedDate":"2023-09-15"},{"lineNumber":112,"author":{"gitId":"peiran18"},"content":" String s \u003d \"\";","lastModifiedDate":"2023-09-15"},{"lineNumber":113,"author":{"gitId":"peiran18"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-10"},{"lineNumber":114,"author":{"gitId":"peiran18"},"content":" s +\u003d \"Nope nothing here...Input tasks first!\";","lastModifiedDate":"2023-09-15"},{"lineNumber":115,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-10"},{"lineNumber":116,"author":{"gitId":"peiran18"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-10"},{"lineNumber":117,"author":{"gitId":"peiran18"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-09-10"},{"lineNumber":118,"author":{"gitId":"peiran18"},"content":" if (t.getDescription().toLowerCase().contains(keyword.toLowerCase())) {","lastModifiedDate":"2023-09-18"},{"lineNumber":119,"author":{"gitId":"peiran18"},"content":" count++;","lastModifiedDate":"2023-09-10"},{"lineNumber":120,"author":{"gitId":"peiran18"},"content":" s +\u003d String.valueOf(count) + \".\" + t.toString() + \"\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":122,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":123,"author":{"gitId":"peiran18"},"content":" s +\u003d \"Ok that\u0027s all I found...\";","lastModifiedDate":"2023-09-15"},{"lineNumber":124,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":125,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":126,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":127,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":128,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":129,"author":{"gitId":"peiran18"},"content":" * Adds a new task to the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":130,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":131,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task description to be added.","lastModifiedDate":"2023-09-25"},{"lineNumber":132,"author":{"gitId":"peiran18"},"content":" * @param storage The storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":133,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the task has been added to the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":134,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":135,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":136,"author":{"gitId":"peiran18"},"content":" public String add(String input, Storage storage) throws IOException {","lastModifiedDate":"2023-09-15"},{"lineNumber":137,"author":{"gitId":"peiran18"},"content":" Task task \u003d Task.parse(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":138,"author":{"gitId":"peiran18"},"content":" String s \u003d \"\";","lastModifiedDate":"2023-09-15"},{"lineNumber":139,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":140,"author":{"gitId":"peiran18"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-09-06"},{"lineNumber":141,"author":{"gitId":"peiran18"},"content":" PotatoException e \u003d new PotatoException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-09-25"},{"lineNumber":142,"author":{"gitId":"peiran18"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-25"},{"lineNumber":143,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":144,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-06"},{"lineNumber":145,"author":{"gitId":"peiran18"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-06"},{"lineNumber":146,"author":{"gitId":"peiran18"},"content":" storage.saveTask(tasks);","lastModifiedDate":"2023-09-06"},{"lineNumber":147,"author":{"gitId":"peiran18"},"content":" int size \u003d tasks.size();","lastModifiedDate":"2023-09-06"},{"lineNumber":148,"author":{"gitId":"peiran18"},"content":" s +\u003d \"Let\u0027s add this to the never ending pile...\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":149,"author":{"gitId":"peiran18"},"content":" + tasks.get(size - 1).toString() + \"\\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":150,"author":{"gitId":"peiran18"},"content":" + \"Now you have \" + size + \" tasks in the list.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":151,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":152,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":153,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":154,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":155,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":156,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":157,"author":{"gitId":"peiran18"},"content":" * Sets the priority of a task.","lastModifiedDate":"2023-09-25"},{"lineNumber":158,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":159,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task index and priority to set.","lastModifiedDate":"2023-09-25"},{"lineNumber":160,"author":{"gitId":"peiran18"},"content":" * @param storage The storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":161,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the task\u0027s priority has been set.","lastModifiedDate":"2023-09-25"},{"lineNumber":162,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":163,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":164,"author":{"gitId":"peiran18"},"content":" public String setPriority(String input, Storage storage) throws IOException {","lastModifiedDate":"2023-09-23"},{"lineNumber":165,"author":{"gitId":"peiran18"},"content":" int indexSet \u003d input.indexOf(\"#\");","lastModifiedDate":"2023-09-23"},{"lineNumber":166,"author":{"gitId":"peiran18"},"content":" int index \u003d Integer.parseInt(input.substring(9, indexSet - 1)) - 1;","lastModifiedDate":"2023-09-23"},{"lineNumber":167,"author":{"gitId":"peiran18"},"content":" String priority \u003d input.substring(indexSet + 1);","lastModifiedDate":"2023-09-23"},{"lineNumber":168,"author":{"gitId":"peiran18"},"content":" tasks.get(index).setPriority(priority);","lastModifiedDate":"2023-09-23"},{"lineNumber":169,"author":{"gitId":"peiran18"},"content":" String s \u003d \"Okay, you have set the priority of this task\\n\"","lastModifiedDate":"2023-09-23"},{"lineNumber":170,"author":{"gitId":"peiran18"},"content":" + tasks.get(index).toString() + \"\\n\"","lastModifiedDate":"2023-09-23"},{"lineNumber":171,"author":{"gitId":"peiran18"},"content":" + \"to \" + priority;","lastModifiedDate":"2023-09-23"},{"lineNumber":172,"author":{"gitId":"peiran18"},"content":" storage.saveTask(tasks);","lastModifiedDate":"2023-09-23"},{"lineNumber":173,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-23"},{"lineNumber":174,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":175,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":175}},{"path":"src/main/java/potato/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"public class Ui {","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" public Ui() {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" System.out.println(\"Hey GURL I\u0027m Potato\\n\" + \"How can I help ya?\");","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" public String showGoodbye() {","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" return \"You\u0027re cancelled. Leave.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" public void showLine() {","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" System.out.println(\"-----------------------------------------\");","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" System.out.println(\"Oops there\u0027s nothing to load! Let\u0027s start a new list!\");","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" public void showError(String message) {","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" System.out.println(message);","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":34}},{"path":"src/main/java/potato/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" * The AddCommand class represents a command for adding a task to the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" * It extends the Command class and specifies the behavior of executing an \"add\" command.","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * Constructs an AddCommand object with the provided user input.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task to be added.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" public AddCommand(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" * Executes the add command, which adds a task to the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" return tasks.add(input, storage);","lastModifiedDate":"2023-09-15"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":35}},{"path":"src/main/java/potato/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" protected boolean isExit;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" protected String input;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" * Executes the command.","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" public abstract String execute(TaskList tasks, Ui ui, Storage storage) throws IOException;","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":20}},{"path":"src/main/java/potato/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * Executes the delete command, which deletes a task from the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" return tasks.delete(input, storage);","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":25}},{"path":"src/main/java/potato/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" public ExitCommand() {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d true;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" return ui.showGoodbye();","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"peiran18":14}},{"path":"src/main/java/potato/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" public FindCommand(String input) {","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * Executes the find command, which finds task in the task list that matches the keyword.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" return tasks.find(input);","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"peiran18":25}},{"path":"src/main/java/potato/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" public ListCommand() {","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" * Executes the list command, which displays the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" return tasks.list();","lastModifiedDate":"2023-09-15"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":24}},{"path":"src/main/java/potato/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" public MarkCommand(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * Executes the mark command, which marks a task in the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" return tasks.mark(input, storage);","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":25}},{"path":"src/main/java/potato/command/SetPriorityCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-23"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.Storage;","lastModifiedDate":"2023-09-23"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import potato.TaskList;","lastModifiedDate":"2023-09-23"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.Ui;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-23"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"public class SetPriorityCommand extends Command {","lastModifiedDate":"2023-09-23"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" public SetPriorityCommand(String input) {","lastModifiedDate":"2023-09-23"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-23"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-23"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * Executes the priority command, which sets the priority of a task in the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" return tasks.setPriority(input, storage);","lastModifiedDate":"2023-09-23"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-23"}],"authorContributionMap":{"peiran18":27}},{"path":"src/main/java/potato/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" public UnmarkCommand(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * Executes the unmark command, which unmarks a task in the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" return tasks.unmark(input, storage);","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":25}},{"path":"src/main/java/potato/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" * The Deadline class represents a task with a specified deadline.","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" * It extends the Task class and adds deadline-related functionality.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" private static final String LINE \u003d \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" protected DateTime deadline;","lastModifiedDate":"2023-09-04"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" protected String by;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" * Constructs a Deadline object with the provided description, deadline, completion status, and priority.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @param by The deadline for the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" * @param priority The priority of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" public Deadline(String description, String by, boolean isDone, String priority) {","lastModifiedDate":"2023-09-23"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" super(description, isDone, priority);","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" this.deadline \u003d new DateTime(by);","lastModifiedDate":"2023-09-04"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" * Parses a user input string to create a Deadline object.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" * @param input The user input string representing the deadline task.","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" * @return A Deadline object created from the input.","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" * @throws PotatoException If the input is empty or invalid.","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" public static Deadline parseDeadline(String input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" int indexBy \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-09-04"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" if (input.length() \u003c 1) {","lastModifiedDate":"2023-09-04"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" new PotatoException(LINE + \"Bruh you wanna do air or something?\\n\" + LINE);","lastModifiedDate":"2023-09-04"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" return null;","lastModifiedDate":"2023-09-04"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-04"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" assert input.length() \u003e 1 : \"input length should be \u003e 1\";","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" return new Deadline(input.substring(0, indexBy - 1),","lastModifiedDate":"2023-09-07"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" input.substring(indexBy + 4), false, \"NIL\");","lastModifiedDate":"2023-09-23"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" * Parses a saved representation of a Deadline object.","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" * @param input The string array containing the saved representation of the deadline task.","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" * @return A Deadline object created from the saved data.","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" public static Deadline parseSavedDeadline(String[] input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" return new Deadline(input[2], input[3], input[1].equals(\"1\"), input[4]);","lastModifiedDate":"2023-09-23"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" * Converts the Deadline object to a string representation suitable for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Deadline object for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" public String toSave() {","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + by + \" | \" + priority.toUpperCase();","lastModifiedDate":"2023-09-23"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":" * Converts the Deadline object to a string for displaying to the user.","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Deadline object.","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"peiran18"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"peiran18"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadline.getDate() + \")\";","lastModifiedDate":"2023-09-04"},{"lineNumber":75,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":76}},{"path":"src/main/java/potato/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" * The Event class represents a task with a specified start and end date.","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" * It extends the Task class and adds event-related functionality.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" private static final String LINE \u003d \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" protected DateTime start;","lastModifiedDate":"2023-09-04"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" protected DateTime end;","lastModifiedDate":"2023-09-04"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" protected String from;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" protected String to;","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * Constructs an Event object with the provided description, start and end dates, completion status, and priority.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" * @param from The start date of the event.","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" * @param to The end date of the event.","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" * @param isDone The completion status of the event.","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" * @param priority The priority of the event.","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" public Event(String description, String from, String to, boolean isDone, String priority) {","lastModifiedDate":"2023-09-23"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" super(description, isDone, priority);","lastModifiedDate":"2023-09-23"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" start \u003d new DateTime(from);","lastModifiedDate":"2023-09-04"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" end \u003d new DateTime(to);","lastModifiedDate":"2023-09-04"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" * Parses a user input string to create an Event object.","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" * @param input The user input string representing the event task.","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" * @return An Event object created from the input.","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" * @throws PotatoException If the input is empty or invalid.","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" public static Event parseEvent(String input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" int indexFrom \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-09-04"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" int indexTo \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-09-04"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" if (input.length() \u003c 1) {","lastModifiedDate":"2023-09-04"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" new PotatoException(LINE + \"Bruh you wanna do air or something?\\n\" + LINE);","lastModifiedDate":"2023-09-04"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" return null;","lastModifiedDate":"2023-09-04"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-04"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" assert input.length() \u003e 1 : \"input length should be \u003e 1\";","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" return new Event(input.substring(0, indexFrom - 1),","lastModifiedDate":"2023-09-07"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" input.substring(indexFrom + 6, indexTo - 1),","lastModifiedDate":"2023-09-07"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" input.substring(indexTo + 4), false, \"NIL\");","lastModifiedDate":"2023-09-23"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" * Parses a saved representation of an Event object.","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" * @param input The string array containing the saved representation of the event task.","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" * @return An Event object created from the saved data.","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" public static Event parseSavedEvent(String[] input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" return new Event(input[2], input[3], input[4], input[1].equals(\"1\"), input[5]);","lastModifiedDate":"2023-09-23"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" * Converts the Event object to a string representation suitable for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Event object for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":" public String toSave() {","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"peiran18"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + from + \" | \" + to + \" | \" + priority.toUpperCase();","lastModifiedDate":"2023-09-23"},{"lineNumber":72,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":73,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":74,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"peiran18"},"content":" * Converts the Event object to a string for displaying to the user.","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":79,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"peiran18"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"peiran18"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start.getDate() + \" to: \" + end.getDate() + \")\";","lastModifiedDate":"2023-09-04"},{"lineNumber":82,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":83}},{"path":"src/main/java/potato/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":" * The Task class represents a general task with a description, completion status, and priority.","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":" * It serves as the base class for specific task types like Todo, Deadline, and Event.","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" protected String priority;","lastModifiedDate":"2023-09-23"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" * Constructs a Task object with the provided description, completion status, and priority.","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param priority The priority of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" public Task(String description, boolean isDone, String priority) {","lastModifiedDate":"2023-09-23"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-09-23"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" * Parses user input to create a specific task type based on the input format.","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" * @param input The user input string representing the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" * @return A specific task object created from the input or null if the input is not recognized.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" public static Task parse(String input) {","lastModifiedDate":"2023-09-04"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" if (input.startsWith(\"todo \")) {","lastModifiedDate":"2023-09-04"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" return Todo.parseTodo(input.substring(5), \"0\");","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"deadline \")) {","lastModifiedDate":"2023-09-04"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" // empty deadline","lastModifiedDate":"2023-09-04"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" // no by","lastModifiedDate":"2023-09-04"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" return Deadline.parseDeadline(input.substring(9));","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"event \")) {","lastModifiedDate":"2023-09-04"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" // empty event","lastModifiedDate":"2023-09-04"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" // no from","lastModifiedDate":"2023-09-04"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" // no to","lastModifiedDate":"2023-09-04"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" return Event.parseEvent(input.substring(6));","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-04"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" return null;","lastModifiedDate":"2023-09-04"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" * Parses a saved representation of a task and creates an appropriate task object based on its type.","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" * @param input The string representation of a task saved in a specific format.","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" * @return A task object created from the saved data or null if the input is invalid.","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" public static Task parseSaved(String input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" String[] parts \u003d input.split(\" \\\\| \");","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" System.out.println(parts[0]);","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" System.out.println(parts[1]);","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" System.out.println(parts[2]);","lastModifiedDate":"2023-09-06"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-09-06"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" case \"T\":","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" System.out.println(\"its todo\");","lastModifiedDate":"2023-09-06"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" return Todo.parseSavedTodo(parts);","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":" case \"D\":","lastModifiedDate":"2023-09-06"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":" // empty deadline","lastModifiedDate":"2023-09-04"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":" // no by","lastModifiedDate":"2023-09-04"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":" return Deadline.parseSavedDeadline(parts);","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":" case \"E\":","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"peiran18"},"content":" // empty event","lastModifiedDate":"2023-09-04"},{"lineNumber":72,"author":{"gitId":"peiran18"},"content":" // no from","lastModifiedDate":"2023-09-04"},{"lineNumber":73,"author":{"gitId":"peiran18"},"content":" // no to","lastModifiedDate":"2023-09-04"},{"lineNumber":74,"author":{"gitId":"peiran18"},"content":" return Event.parseSavedEvent(parts);","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"peiran18"},"content":" default:","lastModifiedDate":"2023-09-06"},{"lineNumber":76,"author":{"gitId":"peiran18"},"content":" return null;","lastModifiedDate":"2023-09-04"},{"lineNumber":77,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":78,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":79,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":80,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":81,"author":{"gitId":"peiran18"},"content":" * Gets the completion status of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"peiran18"},"content":" * @return \"X\" if the task is completed, or \" \" if it is not completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"peiran18"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"peiran18"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":89,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"peiran18"},"content":" * Sets the completion status of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":91,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"peiran18"},"content":" * @param bool The new completion status of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":93,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"peiran18"},"content":" public void setStatus(boolean bool) {","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"peiran18"},"content":" isDone \u003d bool;","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":98,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":99,"author":{"gitId":"peiran18"},"content":" * Gets the description of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":100,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":101,"author":{"gitId":"peiran18"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":102,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"peiran18"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-10"},{"lineNumber":104,"author":{"gitId":"peiran18"},"content":" return description;","lastModifiedDate":"2023-09-10"},{"lineNumber":105,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":106,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"peiran18"},"content":" * Sets the priority of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"peiran18"},"content":" * @param priority The new priority of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":112,"author":{"gitId":"peiran18"},"content":" public void setPriority(String priority) {","lastModifiedDate":"2023-09-23"},{"lineNumber":113,"author":{"gitId":"peiran18"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-09-23"},{"lineNumber":114,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":115,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":116,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":117,"author":{"gitId":"peiran18"},"content":" * Converts the task object to a string representation suitable for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":118,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":119,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the task for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":120,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":121,"author":{"gitId":"peiran18"},"content":" public String toSave() {","lastModifiedDate":"2023-09-06"},{"lineNumber":122,"author":{"gitId":"peiran18"},"content":" return \"\";","lastModifiedDate":"2023-09-06"},{"lineNumber":123,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":124,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":125,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":126,"author":{"gitId":"peiran18"},"content":" * Converts the task object to a string for displaying to the user.","lastModifiedDate":"2023-09-25"},{"lineNumber":127,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":128,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":129,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":130,"author":{"gitId":"peiran18"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"peiran18"},"content":" return \"[\" + getStatus() + \"]\" + \"[\" + priority.toUpperCase() + \"] \" + description;","lastModifiedDate":"2023-09-23"},{"lineNumber":132,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":133}},{"path":"src/main/java/potato/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" * The Todo class represents a task without a specific deadline or event time.","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" * It extends the Task class and adds functionality for todo tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" * Constructs a Todo object with the provided description, completion status, and priority.","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" * @param isDone The completion status of the todo task.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param priority The priority of the todo task.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" public Todo(String description, boolean isDone, String priority) {","lastModifiedDate":"2023-09-23"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" super(description, isDone, priority);","lastModifiedDate":"2023-09-23"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" * Parses a user input string to create a Todo object.","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" * @param input The user input string representing the todo task.","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" * @param mark The marker indicating the completion status (e.g., \"1\" for completed, \"0\" for incomplete).","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" * @return A Todo object created from the input.","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" * @throws PotatoException If the input is empty or invalid.","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" public static Todo parseTodo(String input, String mark) {","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" if (input.length() \u003c 1) {","lastModifiedDate":"2023-09-04"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" new PotatoException(\"Bruh you wanna do air or something?\\n\");","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" return null;","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-04"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" assert input.length() \u003e 1 : \"input length should be \u003e 1\";","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" return new Todo(input, (mark.equals(\"1\")), \"NIL\");","lastModifiedDate":"2023-09-23"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" * Parses a saved representation of a Todo object.","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" * @param input The string array containing the saved representation of the todo task.","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" * @return A Todo object created from the saved data.","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" public static Todo parseSavedTodo(String[] input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" return new Todo(input[2], input[1].equals(\"1\"), input[3]);","lastModifiedDate":"2023-09-23"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" * Converts the Todo object to a string representation suitable for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Todo object for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" public String toSave() {","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + priority.toUpperCase();","lastModifiedDate":"2023-09-23"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" * Converts the Todo object to a string for displaying to the user.","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Todo object.","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":70}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"peiran18":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"potato.MainWindow\"\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"peiran18":19}},{"path":"src/test/java/potato/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import potato.command.*;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" public void testParseExitCommand() {","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" Command command \u003d Parser.parse(\"bye\");","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" assertTrue(command instanceof ExitCommand);","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" System.out.println(\"Not an Exit Command\");","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"peiran18":18}},{"path":"src/test/java/potato/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import potato.task.*;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import java.util.Collection;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" public void testTaskListFind() {","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" Task homework \u003d new Todo(\"do homework\", false, \"NIL\");","lastModifiedDate":"2023-09-23"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" tasks.add(homework);","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" TaskList t \u003d new TaskList(tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" String keyword \u003d \"find work\";","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" System.out.println(t.find(keyword));","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" assertEquals(\"1.[T][ ][NIL] do homework\\n\" + \"Ok that\u0027s all I found...\", t.find(keyword));","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" System.out.println(\"unable to find\");","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"peiran18":27}},{"path":"src/test/java/potato/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" public void toStringTest() {","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" Deadline d \u003d new Deadline(\"birthday!\", \"2023-08-18\", false, \"NIL\");","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" assertEquals(\"[D][ ][NIL] birthday! (by: Aug 18 2023)\", d.toString());","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" System.out.println(\"Make sure you input is correct!\");","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"peiran18":18}},{"path":"src/test/java/potato/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" public void toStringTest() {","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" Todo t \u003d new Todo(\"feed cat\", false, \"NIL\");","lastModifiedDate":"2023-09-23"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" assertEquals(\"[T][ ][NIL] feed cat\", t.toString());","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" System.out.println(\"Make sure you input is correct!\");","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"peiran18":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"todo a","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"deadline b /by tmr","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"event c /from 2pm /to 3pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":6}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":"java -classpath ../bin Potato \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"## convert to UNIX format","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"#cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":"#diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-24"},{"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":{"peiran18":6,"-":33}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"checkstyle {","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-14"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" mainClass.set(\"potato.Launcher\")","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" archiveBaseName \u003d \"potato\"","lastModifiedDate":"2023-09-10"},{"lineNumber":55,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"peiran18":21,"-":40}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"# User Guide","lastModifiedDate":"2019-07-29"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"Potato is a chatbot who helps you keep track of your tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"Words in `UPPER_CASE` are the parameters to be supplied by the user.","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"### Adding a todo task: todo","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"Adds a todo task to the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"Format: todo DESCRIPTION","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"Example: todo read book","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"### Adding a deadline task: deadline","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"Adds a deadline task with a due date to the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"Format: todo DESCRIPTION /by DUEDATE","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":"NOTE: DUEDATE must be given in YYYY-MM-DD format.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":"Example: todo return book /by 2023-09-19","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":"### Adding a event task: event","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"Adds a event task with a start and end date to the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"Format: todo /DESCRIPTION /from START /to END","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":"NOTE: START and END must be given in YYYY-MM-DD format.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":"Example: event library programme /from 2023-12-12 /to 2023-12-15","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":"### Deleting a task: delete","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":"Deletes the specified task from the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":"Format: delete INDEX","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":"NOTE: INDEX must be an integer greater than 0.","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":"Example: delete 1 deletes first task on the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":"### Finding a task: find","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":"Finds all tasks that contains the given keyword.","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":"Format: find KEYWORD","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":"Example: find book returns \u0027read book\u0027 and \u0027return book\u0027","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":"### Listing tasks: list","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":"Lists all tasks in the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":"Format: list","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":"### Marking a task: mark","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":"Marks the specified task from the list as completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":"Format: mark INDEX","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":"NOTE: INDEX must be an integer greater than 0.","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":"Example: mark 1 marks first task on the list as completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":"### Unmarking a task: unmark","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":"Unmarks the specified task from the list as not completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"peiran18"},"content":"Format: unmark INDEX","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":73,"author":{"gitId":"peiran18"},"content":"NOTE: INDEX must be an integer greater than 0.","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":75,"author":{"gitId":"peiran18"},"content":"Example: unmark 1 unmarks first task on the list as not completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":77,"author":{"gitId":"peiran18"},"content":"### Setting priority for a task: priority","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":79,"author":{"gitId":"peiran18"},"content":"Sets the priority of the specified task from the list as high, medium, or low.","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":81,"author":{"gitId":"peiran18"},"content":"Format: priority INDEX #LEVEL","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":83,"author":{"gitId":"peiran18"},"content":"NOTE: INDEX must be an integer greater than 0.","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":85,"author":{"gitId":"peiran18"},"content":"Example: priority 1 #high marks the priority of the first task on the list as high.","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":87,"author":{"gitId":"peiran18"},"content":"### Exiting: bye","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":89,"author":{"gitId":"peiran18"},"content":"Exits the programme.","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":91,"author":{"gitId":"peiran18"},"content":"Format: bye","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":93,"author":{"gitId":"peiran18"},"content":"### Saving the data","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":95,"author":{"gitId":"peiran18"},"content":"Data are saved in the hard disk automatically after any command that changes the data. ","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"peiran18"},"content":"There is no need to save manually.","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"peiran18":82,"-":14}},{"path":"src/main/java/potato/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-04"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-04"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"public class DateTime {","lastModifiedDate":"2023-09-04"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" private LocalDate date;","lastModifiedDate":"2023-09-04"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" private String savedDate;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" public DateTime(String date) {","lastModifiedDate":"2023-09-04"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" this.savedDate \u003d date;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" this.date \u003d LocalDate.parse(date);","lastModifiedDate":"2023-09-04"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" public String getDate() {","lastModifiedDate":"2023-09-04"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" return date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2023-09-04"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-04"}],"authorContributionMap":{"peiran18":17}},{"path":"src/main/java/potato/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-14"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-14"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-14"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-14"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-14"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-14"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-14"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-14"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-14"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" private Label dialog;","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-14"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-17"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-17"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-17"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-17"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-17"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-17"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-17"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-14"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-14"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-14"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" private void flip() {","lastModifiedDate":"2023-09-14"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-14"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-17"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-17"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-17"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-17"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-17"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" public static DialogBox getPotatoDialog(String text, Image img) {","lastModifiedDate":"2023-09-23"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-17"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" db.flip();","lastModifiedDate":"2023-09-14"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" return db;","lastModifiedDate":"2023-09-14"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-14"}],"authorContributionMap":{"peiran18":61}},{"path":"src/main/java/potato/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-14"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-14"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-14"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-14"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-14"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"public class Launcher {","lastModifiedDate":"2023-09-14"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-14"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-14"}],"authorContributionMap":{"peiran18":12}},{"path":"src/main/java/potato/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" * A GUI for Potato using FXML.","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" private Potato potato \u003d new Potato();","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setPotato(potato);","lastModifiedDate":"2023-09-17"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" stage.show();","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-17"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-17"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"peiran18":33}},{"path":"src/main/java/potato/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import javafx.animation.KeyFrame;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import javafx.animation.Timeline;","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" private Potato potato;","lastModifiedDate":"2023-09-17"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" private Image potatoImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaPotato.png\"));","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" public void initialize() {","lastModifiedDate":"2023-09-17"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-17"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" public void setPotato(Potato p) {","lastModifiedDate":"2023-09-17"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" potato \u003d p;","lastModifiedDate":"2023-09-17"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" dialogContainer.getChildren().add(","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" DialogBox.getPotatoDialog(\"Hey GURL I\u0027m Potato!\\n\" + \"How can I help ya?\", potatoImage)","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" );","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-17"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-17"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" @FXML","lastModifiedDate":"2023-09-17"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-17"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" String response \u003d potato.getResponse(input);","lastModifiedDate":"2023-09-17"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-17"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-17"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" DialogBox.getPotatoDialog(response, potatoImage)","lastModifiedDate":"2023-09-23"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" );","lastModifiedDate":"2023-09-17"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" Duration delay \u003d Duration.seconds(3);","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" KeyFrame keyFrame \u003d new KeyFrame(delay, event -\u003e Platform.exit());","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" Timeline timeline \u003d new Timeline(keyFrame);","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" timeline.setCycleCount(1);","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" timeline.play();","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" userInput.clear();","lastModifiedDate":"2023-09-17"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-17"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"peiran18":68}},{"path":"src/main/java/potato/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.command.*;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"public class Parser {","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":" public static Command parse(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" return new ExitCommand();","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" return new MarkCommand(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" return new UnmarkCommand(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"delete \")) {","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"find \")) {","lastModifiedDate":"2023-09-10"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" return new FindCommand(input);","lastModifiedDate":"2023-09-10"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"priority \")) {","lastModifiedDate":"2023-09-23"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" return new SetPriorityCommand(input);","lastModifiedDate":"2023-09-23"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" return new AddCommand(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":31}},{"path":"src/main/java/potato/Potato.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-04"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.command.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class Potato {","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" private Storage storage;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" private TaskList tasks;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" private Ui ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" public Potato() {","lastModifiedDate":"2023-09-14"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" storage \u003d new Storage(\"./Potato.txt\");","lastModifiedDate":"2023-09-14"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-04"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" tasks \u003d new TaskList(storage.loadTask());","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" System.out.println(\"here\u0027s the saved list\");","lastModifiedDate":"2023-09-04"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-04"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" System.out.println(\"No saved list\");","lastModifiedDate":"2023-09-04"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-14"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" * You should have your own function to generate a response to user input.","lastModifiedDate":"2023-09-14"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" * Replace this stub with your completed method.","lastModifiedDate":"2023-09-14"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-14"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" String getResponse(String input) {","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" String response \u003d \"\";","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2023-09-15"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" response +\u003d c.execute(tasks, ui, storage);","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-15"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2023-09-15"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" return response;","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-14"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"peiran18":40}},{"path":"src/main/java/potato/PotatoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"public class PotatoException extends RuntimeException {","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":" public PotatoException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":" super(message);","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":7}},{"path":"src/main/java/potato/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.File;","lastModifiedDate":"2023-09-04"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-04"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-04"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-04"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-04"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"import potato.task.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" * The Storage class represents a data storage utility for managing tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" * It provides functionality to save tasks to a file and load tasks from a file.","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"public class Storage {","lastModifiedDate":"2023-09-04"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" private String path;","lastModifiedDate":"2023-09-04"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * Constructs a new Storage instance with the specified file path.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" * @param filePath The path to the file where tasks will be stored.","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" path \u003d filePath;","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" * Saves the provided list of tasks to the file specified during initialization.","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" * @param tasks The list of tasks to be saved to the file.","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while writing to the file.","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" public void saveTask(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-09-04"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" FileWriter writer \u003d new FileWriter(path);","lastModifiedDate":"2023-09-04"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-09-04"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" writer.write(t.toSave() + \"\\n\");","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" writer.close();","lastModifiedDate":"2023-09-04"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" * Loads tasks from the file specified during initialization.","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" * @return An ArrayList containing the loaded tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while reading from the file.","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" public ArrayList\u003cTask\u003e loadTask() throws IOException {","lastModifiedDate":"2023-09-04"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-04"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" File file \u003d new File(path);","lastModifiedDate":"2023-09-04"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" if (file.exists()) {","lastModifiedDate":"2023-09-04"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-04"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-04"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-04"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" tasks.add(Task.parseSaved(scanner.nextLine()));","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" scanner.close();","lastModifiedDate":"2023-09-04"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-04"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" System.out.println(\"no file\");","lastModifiedDate":"2023-09-04"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" return tasks;","lastModifiedDate":"2023-09-04"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-04"}],"authorContributionMap":{"peiran18":64}},{"path":"src/main/java/potato/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import potato.task.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" * The TaskList class represents a list of tasks and provides methods","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" * for managing and manipulating those tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"public class TaskList {","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" public TaskList() {","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" * Constructs a TaskList with the provided list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" * @param tasks The list of tasks to initialize the TaskList with.","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" * Marks a task as completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task index to be marked.","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" * @param storage The storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the task has been marked as completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" public String mark(String input, Storage storage) throws IOException {","lastModifiedDate":"2023-09-15"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" int index \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" tasks.get(index).setStatus(true);","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" String s \u003d \"Slayyy such efficiency we love it!\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" + \"Let\u0027s take this off the list!\\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" + tasks.get(index).toString();","lastModifiedDate":"2023-09-15"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" storage.saveTask(tasks);","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" * Unmarks a completed task.","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task index to be unmarked.","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" * @param storage The storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the task has been unmarked.","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" public String unmark(String input, Storage storage) throws IOException {","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" int index \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" tasks.get(index).setStatus(false);","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" String s \u003d \"Ohmah... not you lying to me??\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" + \"This is the last time I\u0027m adding it back for you!\\n\"","lastModifiedDate":"2023-09-06"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" + tasks.get(index).toString();","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" storage.saveTask(tasks);","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task index to be deleted.","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"peiran18"},"content":" * @param storage The storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the task has been deleted.","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"peiran18"},"content":" public String delete(String input, Storage storage) throws IOException {","lastModifiedDate":"2023-09-15"},{"lineNumber":76,"author":{"gitId":"peiran18"},"content":" int index \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-09-06"},{"lineNumber":77,"author":{"gitId":"peiran18"},"content":" String s \u003d \"NAUR NOT THE DITCHING?!\\n\" + \"It\u0027s a no do for\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":78,"author":{"gitId":"peiran18"},"content":" + tasks.get(index).toString() + \"\\n\" + \"Now there\u0027s only \" + (tasks.size() - 1)","lastModifiedDate":"2023-09-06"},{"lineNumber":79,"author":{"gitId":"peiran18"},"content":" + \" tasks left sistar pls do them.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":80,"author":{"gitId":"peiran18"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-06"},{"lineNumber":81,"author":{"gitId":"peiran18"},"content":" storage.saveTask(tasks);","lastModifiedDate":"2023-09-06"},{"lineNumber":82,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":83,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":84,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":85,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"peiran18"},"content":" * Retrieves a list of all tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"peiran18"},"content":" * @return A string containing a list of all tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"peiran18"},"content":" public String list() {","lastModifiedDate":"2023-09-15"},{"lineNumber":91,"author":{"gitId":"peiran18"},"content":" String s \u003d \"Ok look all you want but they literally won\u0027t do themselves?\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":93,"author":{"gitId":"peiran18"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-10"},{"lineNumber":94,"author":{"gitId":"peiran18"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-09-06"},{"lineNumber":95,"author":{"gitId":"peiran18"},"content":" if (t \u003d\u003d null) {","lastModifiedDate":"2023-09-10"},{"lineNumber":96,"author":{"gitId":"peiran18"},"content":" break;","lastModifiedDate":"2023-09-10"},{"lineNumber":97,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":98,"author":{"gitId":"peiran18"},"content":" count++;","lastModifiedDate":"2023-09-06"},{"lineNumber":99,"author":{"gitId":"peiran18"},"content":" s +\u003d String.valueOf(count) + \".\" + t.toString() + \"\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":101,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":102,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":103,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":104,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":105,"author":{"gitId":"peiran18"},"content":" * Finds tasks containing a specified keyword in their description.","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the keyword to search for.","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"peiran18"},"content":" * @return A string containing a list of tasks matching the keyword.","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"peiran18"},"content":" public String find(String input) {","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"peiran18"},"content":" String keyword \u003d input.substring(5);","lastModifiedDate":"2023-09-15"},{"lineNumber":112,"author":{"gitId":"peiran18"},"content":" String s \u003d \"\";","lastModifiedDate":"2023-09-15"},{"lineNumber":113,"author":{"gitId":"peiran18"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-10"},{"lineNumber":114,"author":{"gitId":"peiran18"},"content":" s +\u003d \"Nope nothing here...Input tasks first!\";","lastModifiedDate":"2023-09-15"},{"lineNumber":115,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-10"},{"lineNumber":116,"author":{"gitId":"peiran18"},"content":" int count \u003d 0;","lastModifiedDate":"2023-09-10"},{"lineNumber":117,"author":{"gitId":"peiran18"},"content":" for (Task t : tasks) {","lastModifiedDate":"2023-09-10"},{"lineNumber":118,"author":{"gitId":"peiran18"},"content":" if (t.getDescription().toLowerCase().contains(keyword.toLowerCase())) {","lastModifiedDate":"2023-09-18"},{"lineNumber":119,"author":{"gitId":"peiran18"},"content":" count++;","lastModifiedDate":"2023-09-10"},{"lineNumber":120,"author":{"gitId":"peiran18"},"content":" s +\u003d String.valueOf(count) + \".\" + t.toString() + \"\\n\";","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":122,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":123,"author":{"gitId":"peiran18"},"content":" s +\u003d \"Ok that\u0027s all I found...\";","lastModifiedDate":"2023-09-15"},{"lineNumber":124,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":125,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":126,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":127,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":128,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":129,"author":{"gitId":"peiran18"},"content":" * Adds a new task to the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":130,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":131,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task description to be added.","lastModifiedDate":"2023-09-25"},{"lineNumber":132,"author":{"gitId":"peiran18"},"content":" * @param storage The storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":133,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the task has been added to the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":134,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":135,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":136,"author":{"gitId":"peiran18"},"content":" public String add(String input, Storage storage) throws IOException {","lastModifiedDate":"2023-09-15"},{"lineNumber":137,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":138,"author":{"gitId":"peiran18"},"content":" Task task \u003d Task.parse(input);","lastModifiedDate":"2023-09-06"},{"lineNumber":139,"author":{"gitId":"peiran18"},"content":" String s \u003d \"Let\u0027s add this to the never ending pile...\\n\";","lastModifiedDate":"2023-09-26"},{"lineNumber":140,"author":{"gitId":"peiran18"},"content":" tasks.add(task);","lastModifiedDate":"2023-09-06"},{"lineNumber":141,"author":{"gitId":"peiran18"},"content":" storage.saveTask(tasks);","lastModifiedDate":"2023-09-06"},{"lineNumber":142,"author":{"gitId":"peiran18"},"content":" int size \u003d tasks.size();","lastModifiedDate":"2023-09-06"},{"lineNumber":143,"author":{"gitId":"peiran18"},"content":" s +\u003d tasks.get(size - 1).toString() + \"\\n\"","lastModifiedDate":"2023-09-26"},{"lineNumber":144,"author":{"gitId":"peiran18"},"content":" + \"Now you have \" + size + \" task(s) in the list.\";","lastModifiedDate":"2023-09-26"},{"lineNumber":145,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-15"},{"lineNumber":146,"author":{"gitId":"peiran18"},"content":" } catch (PotatoException e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":147,"author":{"gitId":"peiran18"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-26"},{"lineNumber":148,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":149,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":150,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":151,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":152,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":153,"author":{"gitId":"peiran18"},"content":" * Sets the priority of a task.","lastModifiedDate":"2023-09-25"},{"lineNumber":154,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":155,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task index and priority to set.","lastModifiedDate":"2023-09-25"},{"lineNumber":156,"author":{"gitId":"peiran18"},"content":" * @param storage The storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":157,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the task\u0027s priority has been set.","lastModifiedDate":"2023-09-25"},{"lineNumber":158,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":159,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":160,"author":{"gitId":"peiran18"},"content":" public String setPriority(String input, Storage storage) throws IOException {","lastModifiedDate":"2023-09-23"},{"lineNumber":161,"author":{"gitId":"peiran18"},"content":" int indexSet \u003d input.indexOf(\"#\");","lastModifiedDate":"2023-09-23"},{"lineNumber":162,"author":{"gitId":"peiran18"},"content":" int index \u003d Integer.parseInt(input.substring(9, indexSet - 1)) - 1;","lastModifiedDate":"2023-09-23"},{"lineNumber":163,"author":{"gitId":"peiran18"},"content":" String priority \u003d input.substring(indexSet + 1);","lastModifiedDate":"2023-09-23"},{"lineNumber":164,"author":{"gitId":"peiran18"},"content":" tasks.get(index).setPriority(priority);","lastModifiedDate":"2023-09-23"},{"lineNumber":165,"author":{"gitId":"peiran18"},"content":" String s \u003d \"Okay, you have set the priority of this task\\n\"","lastModifiedDate":"2023-09-23"},{"lineNumber":166,"author":{"gitId":"peiran18"},"content":" + tasks.get(index).toString() + \"\\n\"","lastModifiedDate":"2023-09-23"},{"lineNumber":167,"author":{"gitId":"peiran18"},"content":" + \"to \" + priority;","lastModifiedDate":"2023-09-23"},{"lineNumber":168,"author":{"gitId":"peiran18"},"content":" storage.saveTask(tasks);","lastModifiedDate":"2023-09-23"},{"lineNumber":169,"author":{"gitId":"peiran18"},"content":" return s;","lastModifiedDate":"2023-09-23"},{"lineNumber":170,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":171,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":171}},{"path":"src/main/java/potato/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"public class Ui {","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" private Scanner scanner;","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" public Ui() {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" public void showWelcome() {","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" System.out.println(\"Hey GURL I\u0027m Potato\\n\" + \"How can I help ya?\");","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" public String showGoodbye() {","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" return \"You\u0027re cancelled. Leave.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" public void showLine() {","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" System.out.println(\"-----------------------------------------\");","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" System.out.println(\"Oops there\u0027s nothing to load! Let\u0027s start a new list!\");","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" public void showError(String message) {","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" System.out.println(message);","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" public String readCommand() {","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":34}},{"path":"src/main/java/potato/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" * The AddCommand class represents a command for adding a task to the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" * It extends the Command class and specifies the behavior of executing an \"add\" command.","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * Constructs an AddCommand object with the provided user input.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param input The user input specifying the task to be added.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" public AddCommand(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" * Executes the add command, which adds a task to the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" return tasks.add(input, storage);","lastModifiedDate":"2023-09-15"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":35}},{"path":"src/main/java/potato/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" protected boolean isExit;","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" protected String input;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" * Executes the command.","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" public abstract String execute(TaskList tasks, Ui ui, Storage storage) throws IOException;","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":20}},{"path":"src/main/java/potato/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * Executes the delete command, which deletes a task from the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" return tasks.delete(input, storage);","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":25}},{"path":"src/main/java/potato/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-25"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" public ExitCommand() {","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d true;","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" return ui.showGoodbye();","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-25"}],"authorContributionMap":{"peiran18":14}},{"path":"src/main/java/potato/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-10"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-10"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-10"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" public FindCommand(String input) {","lastModifiedDate":"2023-09-10"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-10"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * Executes the find command, which finds task in the task list that matches the keyword.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-10"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" return tasks.find(input);","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-10"}],"authorContributionMap":{"peiran18":25}},{"path":"src/main/java/potato/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" public ListCommand() {","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" * Executes the list command, which displays the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" return tasks.list();","lastModifiedDate":"2023-09-15"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":24}},{"path":"src/main/java/potato/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" public MarkCommand(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * Executes the mark command, which marks a task in the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" return tasks.mark(input, storage);","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":25}},{"path":"src/main/java/potato/command/SetPriorityCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-23"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.Storage;","lastModifiedDate":"2023-09-23"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import potato.TaskList;","lastModifiedDate":"2023-09-23"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.Ui;","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-23"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"public class SetPriorityCommand extends Command {","lastModifiedDate":"2023-09-23"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" public SetPriorityCommand(String input) {","lastModifiedDate":"2023-09-23"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-23"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-23"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * Executes the priority command, which sets the priority of a task in the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" return tasks.setPriority(input, storage);","lastModifiedDate":"2023-09-23"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-23"}],"authorContributionMap":{"peiran18":27}},{"path":"src/main/java/potato/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.command;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-10"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" public UnmarkCommand(String input) {","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" super.input \u003d input;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * Executes the unmark command, which unmarks a task in the task list.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param tasks The TaskList containing the current list of tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param storage The Storage utility for saving task changes.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @return A message indicating the result of adding the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @throws IOException If an error occurs while saving tasks to storage.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" public String execute(TaskList tasks, Ui ui, Storage storage) throws IOException {","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" return tasks.unmark(input, storage);","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"peiran18":25}},{"path":"src/main/java/potato/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" * The Deadline class represents a task with a specified deadline.","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" * It extends the Task class and adds deadline-related functionality.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" private static final String LINE \u003d \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" protected DateTime deadline;","lastModifiedDate":"2023-09-04"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" protected String by;","lastModifiedDate":"2023-09-07"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" * Constructs a Deadline object with the provided description, deadline, completion status, and priority.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @param by The deadline for the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" * @param priority The priority of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" public Deadline(String description, String by, boolean isDone, String priority) {","lastModifiedDate":"2023-09-23"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" super(description, isDone, priority);","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" this.deadline \u003d new DateTime(by);","lastModifiedDate":"2023-09-04"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" this.by \u003d by;","lastModifiedDate":"2023-09-07"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" * Parses a user input string to create a Deadline object.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" * @param input The user input string representing the deadline task.","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" * @return A Deadline object created from the input.","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" * @throws PotatoException If the input is empty or invalid.","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" public static Deadline parseDeadline(String input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" int indexBy \u003d input.indexOf(\"/by\");","lastModifiedDate":"2023-09-04"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" if (input.length() \u003c 1) {","lastModifiedDate":"2023-09-04"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" throw new PotatoException(\"Bruh you wanna do air or something?\");","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" } else if (indexBy \u003c 0) {","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" throw new PotatoException(\"WHEN\u0027S THE DUE DATE???\");","lastModifiedDate":"2023-09-26"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-04"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" assert input.length() \u003e 1 : \"input length should be \u003e 1\";","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" return new Deadline(input.substring(0, indexBy - 1),","lastModifiedDate":"2023-09-07"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" input.substring(indexBy + 4), false, \"NIL\");","lastModifiedDate":"2023-09-23"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" * Parses a saved representation of a Deadline object.","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" * @param input The string array containing the saved representation of the deadline task.","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" * @return A Deadline object created from the saved data.","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" public static Deadline parseSavedDeadline(String[] input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" return new Deadline(input[2], input[3], input[1].equals(\"1\"), input[4]);","lastModifiedDate":"2023-09-23"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" * Converts the Deadline object to a string representation suitable for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Deadline object for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" public String toSave() {","lastModifiedDate":"2023-09-06"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + by + \" | \" + priority.toUpperCase();","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":" * Converts the Deadline object to a string for displaying to the user.","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Deadline object.","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"peiran18"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"peiran18"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadline.getDate() + \")\";","lastModifiedDate":"2023-09-04"},{"lineNumber":76,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":77}},{"path":"src/main/java/potato/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" * The Event class represents a task with a specified start and end date.","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" * It extends the Task class and adds event-related functionality.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" private static final String LINE \u003d \"-----------------------------------------\\n\";","lastModifiedDate":"2023-09-10"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" protected DateTime start;","lastModifiedDate":"2023-09-04"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" protected DateTime end;","lastModifiedDate":"2023-09-04"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" protected String from;","lastModifiedDate":"2023-09-07"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" protected String to;","lastModifiedDate":"2023-09-07"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * Constructs an Event object with the provided description, start and end dates, completion status, and priority.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @param description The description of the event.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" * @param from The start date of the event.","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" * @param to The end date of the event.","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" * @param isDone The completion status of the event.","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" * @param priority The priority of the event.","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" public Event(String description, String from, String to, boolean isDone, String priority) {","lastModifiedDate":"2023-09-23"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" super(description, isDone, priority);","lastModifiedDate":"2023-09-23"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" start \u003d new DateTime(from);","lastModifiedDate":"2023-09-04"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" end \u003d new DateTime(to);","lastModifiedDate":"2023-09-04"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" this.from \u003d from;","lastModifiedDate":"2023-09-07"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" this.to \u003d to;","lastModifiedDate":"2023-09-07"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" * Parses a user input string to create an Event object.","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" * @param input The user input string representing the event task.","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" * @return An Event object created from the input.","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" * @throws PotatoException If the input is empty or invalid.","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" public static Event parseEvent(String input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" int indexFrom \u003d input.indexOf(\"/from\");","lastModifiedDate":"2023-09-04"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" int indexTo \u003d input.indexOf(\"/to\");","lastModifiedDate":"2023-09-04"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" if (input.length() \u003c 1) {","lastModifiedDate":"2023-09-04"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" throw new PotatoException(\"Bruh you wanna do air or something?\");","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" } else if (indexFrom \u003c 0) {","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" throw new PotatoException(\"Looks like your event don\u0027t need to start?\");","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" } else if (indexTo \u003c 0) {","lastModifiedDate":"2023-09-26"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" throw new PotatoException(\"Looks like your event goes on forever?\");","lastModifiedDate":"2023-09-26"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-04"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" assert input.length() \u003e 1 : \"input length should be \u003e 1\";","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" return new Event(input.substring(0, indexFrom - 1),","lastModifiedDate":"2023-09-07"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" input.substring(indexFrom + 6, indexTo - 1),","lastModifiedDate":"2023-09-07"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" input.substring(indexTo + 4), false, \"NIL\");","lastModifiedDate":"2023-09-23"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" * Parses a saved representation of an Event object.","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" * @param input The string array containing the saved representation of the event task.","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" * @return An Event object created from the saved data.","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" public static Event parseSavedEvent(String[] input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" return new Event(input[2], input[3], input[4], input[1].equals(\"1\"), input[5]);","lastModifiedDate":"2023-09-23"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":" * Converts the Event object to a string representation suitable for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Event object for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":73,"author":{"gitId":"peiran18"},"content":" public String toSave() {","lastModifiedDate":"2023-09-06"},{"lineNumber":74,"author":{"gitId":"peiran18"},"content":" return \"E | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + from + \" | \" + to + \" | \" + priority.toUpperCase();","lastModifiedDate":"2023-09-23"},{"lineNumber":75,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":76,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":77,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"peiran18"},"content":" * Converts the Event object to a string for displaying to the user.","lastModifiedDate":"2023-09-25"},{"lineNumber":79,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2023-09-25"},{"lineNumber":81,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"peiran18"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"peiran18"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start.getDate() + \" to: \" + end.getDate() + \")\";","lastModifiedDate":"2023-09-04"},{"lineNumber":85,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":86}},{"path":"src/main/java/potato/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.PotatoException;","lastModifiedDate":"2023-09-26"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" * The Task class represents a general task with a description, completion status, and priority.","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" * It serves as the base class for specific task types like Todo, Deadline, and Event.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" protected String priority;","lastModifiedDate":"2023-09-23"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" * Constructs a Task object with the provided description, completion status, and priority.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" * @param priority The priority of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" public Task(String description, boolean isDone, String priority) {","lastModifiedDate":"2023-09-23"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-09-23"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" * Parses user input to create a specific task type based on the input format.","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" * @param input The user input string representing the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":" * @return A specific task object created from the input or null if the input is not recognized.","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" public static Task parse(String input) {","lastModifiedDate":"2023-09-04"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" if (input.startsWith(\"todo \")) {","lastModifiedDate":"2023-09-04"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" return Todo.parseTodo(input.substring(5), \"0\");","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" } catch (PotatoException e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" throw new PotatoException(e.getMessage());","lastModifiedDate":"2023-09-26"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-04"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" return Deadline.parseDeadline(input.substring(9));","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" } catch (PotatoException e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" throw new PotatoException(e.getMessage());","lastModifiedDate":"2023-09-26"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-04"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":" return Event.parseEvent(input.substring(6));","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-04"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" throw new PotatoException(\"Literally what are you talking about...\");","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" * Parses a saved representation of a task and creates an appropriate task object based on its type.","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" * @param input The string representation of a task saved in a specific format.","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":" * @return A task object created from the saved data or null if the input is invalid.","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" public static Task parseSaved(String input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" String[] parts \u003d input.split(\" \\\\| \");","lastModifiedDate":"2023-09-06"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" System.out.println(parts[0]);","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" System.out.println(parts[1]);","lastModifiedDate":"2023-09-06"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" System.out.println(parts[2]);","lastModifiedDate":"2023-09-06"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":" switch (parts[0]) {","lastModifiedDate":"2023-09-06"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":" case \"T\":","lastModifiedDate":"2023-09-06"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":" System.out.println(\"its todo\");","lastModifiedDate":"2023-09-06"},{"lineNumber":70,"author":{"gitId":"peiran18"},"content":" return Todo.parseSavedTodo(parts);","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"peiran18"},"content":" case \"D\":","lastModifiedDate":"2023-09-06"},{"lineNumber":72,"author":{"gitId":"peiran18"},"content":" // empty deadline","lastModifiedDate":"2023-09-04"},{"lineNumber":73,"author":{"gitId":"peiran18"},"content":" // no by","lastModifiedDate":"2023-09-04"},{"lineNumber":74,"author":{"gitId":"peiran18"},"content":" return Deadline.parseSavedDeadline(parts);","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"peiran18"},"content":" case \"E\":","lastModifiedDate":"2023-09-06"},{"lineNumber":76,"author":{"gitId":"peiran18"},"content":" // empty event","lastModifiedDate":"2023-09-04"},{"lineNumber":77,"author":{"gitId":"peiran18"},"content":" // no from","lastModifiedDate":"2023-09-04"},{"lineNumber":78,"author":{"gitId":"peiran18"},"content":" // no to","lastModifiedDate":"2023-09-04"},{"lineNumber":79,"author":{"gitId":"peiran18"},"content":" return Event.parseSavedEvent(parts);","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"peiran18"},"content":" default:","lastModifiedDate":"2023-09-06"},{"lineNumber":81,"author":{"gitId":"peiran18"},"content":" return null;","lastModifiedDate":"2023-09-04"},{"lineNumber":82,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":83,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":84,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":85,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"peiran18"},"content":" * Gets the completion status of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"peiran18"},"content":" * @return \"X\" if the task is completed, or \" \" if it is not completed.","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"peiran18"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"peiran18"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":94,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"peiran18"},"content":" * Sets the completion status of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"peiran18"},"content":" * @param bool The new completion status of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":99,"author":{"gitId":"peiran18"},"content":" public void setStatus(boolean bool) {","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"peiran18"},"content":" isDone \u003d bool;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":103,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":104,"author":{"gitId":"peiran18"},"content":" * Gets the description of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":105,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"peiran18"},"content":" * @return The description of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"peiran18"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-10"},{"lineNumber":109,"author":{"gitId":"peiran18"},"content":" return description;","lastModifiedDate":"2023-09-10"},{"lineNumber":110,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-10"},{"lineNumber":111,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":112,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":113,"author":{"gitId":"peiran18"},"content":" * Sets the priority of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":114,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":115,"author":{"gitId":"peiran18"},"content":" * @param priority The new priority of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":116,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":117,"author":{"gitId":"peiran18"},"content":" public void setPriority(String priority) {","lastModifiedDate":"2023-09-23"},{"lineNumber":118,"author":{"gitId":"peiran18"},"content":" this.priority \u003d priority;","lastModifiedDate":"2023-09-23"},{"lineNumber":119,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":120,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-10"},{"lineNumber":121,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":122,"author":{"gitId":"peiran18"},"content":" * Converts the task object to a string representation suitable for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":123,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":124,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the task for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":125,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":126,"author":{"gitId":"peiran18"},"content":" public String toSave() {","lastModifiedDate":"2023-09-06"},{"lineNumber":127,"author":{"gitId":"peiran18"},"content":" return \"\";","lastModifiedDate":"2023-09-06"},{"lineNumber":128,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":129,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":130,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":131,"author":{"gitId":"peiran18"},"content":" * Converts the task object to a string for displaying to the user.","lastModifiedDate":"2023-09-25"},{"lineNumber":132,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":133,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the task.","lastModifiedDate":"2023-09-25"},{"lineNumber":134,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":135,"author":{"gitId":"peiran18"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"peiran18"},"content":" return \"[\" + getStatus() + \"]\" + \"[\" + priority.toUpperCase() + \"] \" + description;","lastModifiedDate":"2023-09-23"},{"lineNumber":137,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":138}},{"path":"src/main/java/potato/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-07"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-07"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import potato.*;","lastModifiedDate":"2023-09-07"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"/**","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":" * The Todo class represents a task without a specific deadline or event time.","lastModifiedDate":"2023-09-25"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":" * It extends the Task class and adds functionality for todo tasks.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" * Constructs a Todo object with the provided description, completion status, and priority.","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" * @param isDone The completion status of the todo task.","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" * @param priority The priority of the todo task.","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" public Todo(String description, boolean isDone, String priority) {","lastModifiedDate":"2023-09-23"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" super(description, isDone, priority);","lastModifiedDate":"2023-09-23"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" * Parses a user input string to create a Todo object.","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" * @param input The user input string representing the todo task.","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" * @param mark The marker indicating the completion status (e.g., \"1\" for completed, \"0\" for incomplete).","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":" * @return A Todo object created from the input.","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"peiran18"},"content":" * @throws PotatoException If the input is empty or invalid.","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":" public static Todo parseTodo(String input, String mark) {","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"peiran18"},"content":" if (input.length() \u003c 1) {","lastModifiedDate":"2023-09-04"},{"lineNumber":33,"author":{"gitId":"peiran18"},"content":" throw new PotatoException(\"Bruh you wanna do air or something?\\n\");","lastModifiedDate":"2023-09-26"},{"lineNumber":34,"author":{"gitId":"peiran18"},"content":" } else {","lastModifiedDate":"2023-09-04"},{"lineNumber":35,"author":{"gitId":"peiran18"},"content":" assert input.length() \u003e 1 : \"input length should be \u003e 1\";","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"peiran18"},"content":" return new Todo(input, (mark.equals(\"1\")), \"NIL\");","lastModifiedDate":"2023-09-23"},{"lineNumber":37,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":38,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-04"},{"lineNumber":39,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-04"},{"lineNumber":40,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"peiran18"},"content":" * Parses a saved representation of a Todo object.","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"peiran18"},"content":" * @param input The string array containing the saved representation of the todo task.","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"peiran18"},"content":" * @return A Todo object created from the saved data.","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"peiran18"},"content":" public static Todo parseSavedTodo(String[] input) {","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"peiran18"},"content":" return new Todo(input[2], input[1].equals(\"1\"), input[3]);","lastModifiedDate":"2023-09-23"},{"lineNumber":48,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":49,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":50,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"peiran18"},"content":" * Converts the Todo object to a string representation suitable for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Todo object for saving.","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"peiran18"},"content":" public String toSave() {","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"peiran18"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + priority.toUpperCase();","lastModifiedDate":"2023-09-23"},{"lineNumber":58,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"peiran18"},"content":" /**","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"peiran18"},"content":" * Converts the Todo object to a string for displaying to the user.","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"peiran18"},"content":" *","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"peiran18"},"content":" * @return A string representation of the Todo object.","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"peiran18"},"content":" */","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"peiran18"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"peiran18"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"peiran18"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":69}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"peiran18":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"potato.MainWindow\"\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"peiran18":19}},{"path":"src/test/java/potato/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import potato.command.*;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" public void testParseExitCommand() {","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" Command command \u003d Parser.parse(\"bye\");","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" assertTrue(command instanceof ExitCommand);","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" System.out.println(\"Not an Exit Command\");","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"peiran18":18}},{"path":"src/test/java/potato/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"import potato.task.*;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"import java.util.Collection;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" public void testTaskListFind() {","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" Task homework \u003d new Todo(\"do homework\", false, \"NIL\");","lastModifiedDate":"2023-09-23"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":" tasks.add(homework);","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"peiran18"},"content":" TaskList t \u003d new TaskList(tasks);","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"peiran18"},"content":" String keyword \u003d \"find work\";","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"peiran18"},"content":" System.out.println(t.find(keyword));","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"peiran18"},"content":" assertEquals(\"1.[T][ ][NIL] do homework\\n\" + \"Ok that\u0027s all I found...\", t.find(keyword));","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"peiran18"},"content":" System.out.println(\"unable to find\");","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"peiran18":27}},{"path":"src/test/java/potato/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" public void toStringTest() {","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" Deadline d \u003d new Deadline(\"birthday!\", \"2023-08-18\", false, \"NIL\");","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" assertEquals(\"[D][ ][NIL] birthday! (by: Aug 18 2023)\", d.toString());","lastModifiedDate":"2023-09-25"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" System.out.println(\"Make sure you input is correct!\");","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"peiran18":18}},{"path":"src/test/java/potato/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"package potato.task;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"peiran18"},"content":"public class TodoTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"peiran18"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"peiran18"},"content":" public void toStringTest() {","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"peiran18"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"peiran18"},"content":" Todo t \u003d new Todo(\"feed cat\", false, \"NIL\");","lastModifiedDate":"2023-09-23"},{"lineNumber":12,"author":{"gitId":"peiran18"},"content":" assertEquals(\"[T][ ][NIL] feed cat\", t.toString());","lastModifiedDate":"2023-09-25"},{"lineNumber":13,"author":{"gitId":"peiran18"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"peiran18"},"content":" System.out.println(\"Make sure you input is correct!\");","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"peiran18"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"peiran18"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"peiran18":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"peiran18"},"content":"todo a","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"peiran18"},"content":"deadline b /by tmr","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"peiran18"},"content":"event c /from 2pm /to 3pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"peiran18"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"peiran18"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"peiran18"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"peiran18":6}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"peiran18"},"content":"java -classpath ../bin Potato \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"peiran18"},"content":"## convert to UNIX format","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"peiran18"},"content":"#cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"peiran18"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"peiran18"},"content":"#diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"peiran18"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2023-08-24"},{"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":{"peiran18":6,"-":33}}] diff --git a/peiran18_ip_master/commits.json b/peiran18_ip_master/commits.json index 7fc1da85..a56716b2 100644 --- a/peiran18_ip_master/commits.json +++ b/peiran18_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"peiran18":[{"date":"2023-08-23","commitResults":[{"hash":"d75443037ba6b6d24f141cc861a7bc283d650dee","isMergeCommit":false,"messageTitle":"Potato greets user and exits","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":10}}},{"hash":"38d903e1ad7c608628f3e98f7f2afb9b0651d121","isMergeCommit":false,"messageTitle":"Echoes user commands until bye, added horizontal lines","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"fb38a1abbd68d4601a79b4565f273d731ebeb596","isMergeCommit":false,"messageTitle":"Store and display user input","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"e3abb513b76a5073396187146564310f04c34466","isMergeCommit":false,"messageTitle":"Added Task class, able to mark task as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":6}}},{"hash":"8e0d72160e10cb1afdf71e23981149d340409f9b","isMergeCommit":false,"messageTitle":"track todo, deadline, event","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":14}}},{"hash":"e366cc53a3dd035c2d1b1f0e59d3a8f9bb93fb5e","isMergeCommit":false,"messageTitle":"identify todo, deadline, event using keywords","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"878168be5437ebe10ce4ed39494c1d09df7fc754","isMergeCommit":false,"messageTitle":"minimal exceptions handled","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":10}}},{"hash":"c3b1c4895317c7f41dd6e44427d49c8af533a467","isMergeCommit":false,"messageTitle":"minor fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":11}}},{"hash":"dc10a69c681b18e6e0906448cf8e7bad24c57e70","isMergeCommit":false,"messageTitle":"delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"f10974ba907f3c84018cff60553d786f9503d8f6","isMergeCommit":false,"messageTitle":"testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"sh":{"insertions":6,"deletions":5}}},{"hash":"1b2eea96ddf2fa776b3c69b899621a07af69578f","isMergeCommit":false,"messageTitle":"all bugs fixed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-04","commitResults":[{"hash":"b1006cf0a82513d23cc84ee87b99f5807e4f46f5","isMergeCommit":false,"messageTitle":"Add saving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":250,"deletions":90}}},{"hash":"85f0faaf54e8d9f387510228b4507d32a6541d77","isMergeCommit":false,"messageTitle":"Teach the chatbot how to understand dates and times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}},{"hash":"3be4563b50baa4c0424f16c41093738c10b78051","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Deadline.java\n#\tsrc/main/java/Event.java\n#\tsrc/main/java/Task.java\n","fileTypesAndContributionMap":{}},{"hash":"667cac354c5e48fb2e525cddd1a0324068a81297","isMergeCommit":false,"messageTitle":"Merge all previous branches","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":15}}},{"hash":"a6e466533a7e4d3b7819e13b2853155f2ac760c8","isMergeCommit":false,"messageTitle":"Add data saving and loading","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":256,"deletions":98}}},{"hash":"c0c3c6e7442fb49571c7b2493cb1c83c238ee344","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ce288c41ee82ed760a4ea8bd53b00dd5021f329b","isMergeCommit":false,"messageTitle":"Add date identification feature","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"1d84a424b5ba6436e215844f15daccef8a456df5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-06","commitResults":[{"hash":"faf1bd72844dbf8dcbb71cab0331ab1156f2ad40","isMergeCommit":false,"messageTitle":"Add OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":30}}},{"hash":"dfbfee2e9cebabda83b941978ff2c5a12ddc99e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MoreOOP\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e5e7d7073971d9dae59971bd038e431150786d11","isMergeCommit":false,"messageTitle":"Add gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"e0a73f553ea08a8290828b7523de25ad04767525","isMergeCommit":false,"messageTitle":"Add JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":0}}},{"hash":"5ac40a85c35278c1e1c1f695f63105ea53e382e3","isMergeCommit":false,"messageTitle":"Create Jar File","messageBody":"","tags":["A-JAR"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":125}}},{"hash":"fdfe96a3af2151220a4a1e5cc23f482444659652","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":0}}},{"hash":"48dfb610fa7a1bc466dce5a757712a4029f0138c","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"5dcc4c910d53da84ad55c3f6ef59230e880e0683","isMergeCommit":false,"messageTitle":"Make changes according to coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"482d896324b7420c6ca992d70483084e56694542","isMergeCommit":false,"messageTitle":"Add find feature","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"3edc3b172c2dab8ff03d5520de7b3178a2b5f560","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e717fe25de429d727b8ebb04dcb742fda95d7f89","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"15ddbf0419996719bc61899bc2f18c5fbd3aa1eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77cd6796dc4eca3539c1e86c1973e2e0ca441941","isMergeCommit":false,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}},{"hash":"fc30f9ee9cedd10466c74edd38a76666091206a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/peiran18/ip","messageBody":"# Conflicts:\n#\tsrc/main/java/DateTime.java\n#\tsrc/main/java/Deadline.java\n#\tsrc/main/java/Event.java\n#\tsrc/main/java/Potato.java\n#\tsrc/main/java/Storage.java\n#\tsrc/main/java/Task.java\n#\tsrc/main/java/Todo.java\n","fileTypesAndContributionMap":{}}]},{"date":"2023-09-07","commitResults":[{"hash":"878b99ae1fa12e428462d64fed59eb45f5dbf409","isMergeCommit":false,"messageTitle":"Make improvements based on peer review","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":245}}},{"hash":"6a5ac27f124a5a31fccefd7a05f0ac5e2be7a523","isMergeCommit":false,"messageTitle":"Add package refinements","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":2}}},{"hash":"c2e1875acec467de28b1dd3ef71411ac01e84c60","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-08","commitResults":[{"hash":"c6a31884df5cd6e5747bf08ed0f72ce88fd5e1cc","isMergeCommit":false,"messageTitle":"Fix bugs and gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-10","commitResults":[{"hash":"35fa0ff5f7b979c75ff9e2a72e0143c1966c3a36","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":36,"deletions":3}}},{"hash":"e0519d69f5d5ce72ec0d9979d91b5fc8e797eac4","isMergeCommit":false,"messageTitle":"Add base case for find feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":3}}},{"hash":"dff63031ae6a271911234711abdf2f112f2bb940","isMergeCommit":false,"messageTitle":"Add checkstyle files and fix code according to coding standards","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":52,"deletions":45}}},{"hash":"c16fafc92ae72cddbfce9ff7e21c090f5c6af5bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-checkstyle\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-14","commitResults":[{"hash":"a2a4617193b001a28b1f5d251e66bfaa22cd1d02","isMergeCommit":false,"messageTitle":"Implement functional GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":172,"deletions":4}}}]},{"date":"2023-09-15","commitResults":[{"hash":"44e0866e66c3826369f4ba55a6cd347b92c95e16","isMergeCommit":false,"messageTitle":"Fix GUI bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":45}}}]},{"date":"2023-09-17","commitResults":[{"hash":"055946d2f4a9e4684be70393c0c56f59306915aa","isMergeCommit":false,"messageTitle":"Implement GUI using FXML","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":35,"deletions":0},"java":{"insertions":142,"deletions":144}}},{"hash":"1fe0df559a72542e3724d5982baaceab8d4d79a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-18","commitResults":[{"hash":"3794342e7b5da70b3eafce72b60f1fa7e7f0efe6","isMergeCommit":false,"messageTitle":"Find command: make matching case-insensitive","messageBody":"Find command is case-sensitive.\n\nA case-insensitive find is more user-friendly because users cannot be\nexpected to remember the exact case of the keywords.\n\nLet\u0027s update the search algorithm to use case-insensitive matching.\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":31}}},{"hash":"a6adee9590a5bc6376580decd60328d7dcbe229d","isMergeCommit":false,"messageTitle":"FXML goodbye: close application","messageBody":"command \"bye\" prints goodbye UI but does not exit app.\n\nThe application should close automatically upon \"bye\" command.\n\nLet\u0027s update the exitCommand to exit the application.\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":25,"deletions":43}}}]},{"date":"2023-09-22","commitResults":[{"hash":"0f31ff118dbb52370972c967f61b78b204f8b2f2","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"94f1d231b282d59191d753f9aa2e2503984d4e5b","isMergeCommit":true,"messageTitle":"Merge pull request #2 from peiran18/branch-A-Assertions","messageBody":"Add assertions","fileTypesAndContributionMap":{}},{"hash":"047da4573b53f4faa7b8655b04f347f8336236ad","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/peiran18/ip","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{}},{"hash":"da7f86b2bbefe456ca15e31c60dfa30056261857","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":62}}},{"hash":"f64e8826ef1df67338e4586110ca1cbfffea3966","isMergeCommit":true,"messageTitle":"Merge pull request #3 from peiran18/branch-A-CodeQuality","messageBody":"Improve code quality","fileTypesAndContributionMap":{}},{"hash":"1721175beab0e927f9183ee8deb09532d411f116","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/peiran18/ip","messageBody":"# Conflicts:\n#\tsrc/main/java/potato/Main.java\n#\tsrc/main/java/potato/MainWindow.java\n#\tsrc/main/java/potato/Potato.java\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-23","commitResults":[{"hash":"dec3937bfcf76383f9b12e871f2a1ca2c590ee1a","isMergeCommit":false,"messageTitle":"Add priority feature to label tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":22}}},{"hash":"39bc13de6316c03590ecfae8ada9c86c570342e3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-priority\u0027","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-25","commitResults":[{"hash":"452bdf4f6df0b71d9dfbf29c2c9fe06959ed258e","isMergeCommit":false,"messageTitle":"Fix hello and goodbye commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":9}}},{"hash":"86f27a1fccdc66d16c022eee9a99064050d4f6e1","isMergeCommit":false,"messageTitle":"Add readme","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":82,"deletions":15}}},{"hash":"1da8ece758f2d89bf6c5565efba319f458408fb2","isMergeCommit":false,"messageTitle":"Improve documention","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":365,"deletions":103}}},{"hash":"0125c0f25833e88d3d4a6b5b3bd384086310af10","isMergeCommit":false,"messageTitle":"Minor bug fix","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":18}}}]}]},"authorFileTypeContributionMap":{"peiran18":{"java":1204,"md":82,"fxml":35,"sh":6,"bat":0,"gradle":13,"txt":6}},"authorContributionVariance":{"peiran18":32536.92},"authorDisplayNameMap":{"peiran18":"CS2103T-W12-3 CHEN..IRAN"}} +{"authorDailyContributionsMap":{"peiran18":[{"date":"2023-08-23","commitResults":[{"hash":"d75443037ba6b6d24f141cc861a7bc283d650dee","isMergeCommit":false,"messageTitle":"Potato greets user and exits","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":10}}},{"hash":"38d903e1ad7c608628f3e98f7f2afb9b0651d121","isMergeCommit":false,"messageTitle":"Echoes user commands until bye, added horizontal lines","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"fb38a1abbd68d4601a79b4565f273d731ebeb596","isMergeCommit":false,"messageTitle":"Store and display user input","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"e3abb513b76a5073396187146564310f04c34466","isMergeCommit":false,"messageTitle":"Added Task class, able to mark task as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":6}}},{"hash":"8e0d72160e10cb1afdf71e23981149d340409f9b","isMergeCommit":false,"messageTitle":"track todo, deadline, event","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":14}}},{"hash":"e366cc53a3dd035c2d1b1f0e59d3a8f9bb93fb5e","isMergeCommit":false,"messageTitle":"identify todo, deadline, event using keywords","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"878168be5437ebe10ce4ed39494c1d09df7fc754","isMergeCommit":false,"messageTitle":"minimal exceptions handled","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":10}}},{"hash":"c3b1c4895317c7f41dd6e44427d49c8af533a467","isMergeCommit":false,"messageTitle":"minor fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":11}}},{"hash":"dc10a69c681b18e6e0906448cf8e7bad24c57e70","isMergeCommit":false,"messageTitle":"delete tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"f10974ba907f3c84018cff60553d786f9503d8f6","isMergeCommit":false,"messageTitle":"testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"sh":{"insertions":6,"deletions":5}}},{"hash":"1b2eea96ddf2fa776b3c69b899621a07af69578f","isMergeCommit":false,"messageTitle":"all bugs fixed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2023-09-04","commitResults":[{"hash":"b1006cf0a82513d23cc84ee87b99f5807e4f46f5","isMergeCommit":false,"messageTitle":"Add saving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":250,"deletions":90}}},{"hash":"85f0faaf54e8d9f387510228b4507d32a6541d77","isMergeCommit":false,"messageTitle":"Teach the chatbot how to understand dates and times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}},{"hash":"3be4563b50baa4c0424f16c41093738c10b78051","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Deadline.java\n#\tsrc/main/java/Event.java\n#\tsrc/main/java/Task.java\n","fileTypesAndContributionMap":{}},{"hash":"667cac354c5e48fb2e525cddd1a0324068a81297","isMergeCommit":false,"messageTitle":"Merge all previous branches","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":15}}},{"hash":"a6e466533a7e4d3b7819e13b2853155f2ac760c8","isMergeCommit":false,"messageTitle":"Add data saving and loading","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":256,"deletions":98}}},{"hash":"c0c3c6e7442fb49571c7b2493cb1c83c238ee344","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ce288c41ee82ed760a4ea8bd53b00dd5021f329b","isMergeCommit":false,"messageTitle":"Add date identification feature","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"1d84a424b5ba6436e215844f15daccef8a456df5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-06","commitResults":[{"hash":"faf1bd72844dbf8dcbb71cab0331ab1156f2ad40","isMergeCommit":false,"messageTitle":"Add OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":30}}},{"hash":"dfbfee2e9cebabda83b941978ff2c5a12ddc99e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MoreOOP\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e5e7d7073971d9dae59971bd038e431150786d11","isMergeCommit":false,"messageTitle":"Add gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"e0a73f553ea08a8290828b7523de25ad04767525","isMergeCommit":false,"messageTitle":"Add JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":0}}},{"hash":"5ac40a85c35278c1e1c1f695f63105ea53e382e3","isMergeCommit":false,"messageTitle":"Create Jar File","messageBody":"","tags":["A-JAR"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":125}}},{"hash":"fdfe96a3af2151220a4a1e5cc23f482444659652","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":0}}},{"hash":"48dfb610fa7a1bc466dce5a757712a4029f0138c","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"5dcc4c910d53da84ad55c3f6ef59230e880e0683","isMergeCommit":false,"messageTitle":"Make changes according to coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"482d896324b7420c6ca992d70483084e56694542","isMergeCommit":false,"messageTitle":"Add find feature","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"3edc3b172c2dab8ff03d5520de7b3178a2b5f560","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e717fe25de429d727b8ebb04dcb742fda95d7f89","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"15ddbf0419996719bc61899bc2f18c5fbd3aa1eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77cd6796dc4eca3539c1e86c1973e2e0ca441941","isMergeCommit":false,"messageTitle":"Fix minor bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}},{"hash":"fc30f9ee9cedd10466c74edd38a76666091206a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/peiran18/ip","messageBody":"# Conflicts:\n#\tsrc/main/java/DateTime.java\n#\tsrc/main/java/Deadline.java\n#\tsrc/main/java/Event.java\n#\tsrc/main/java/Potato.java\n#\tsrc/main/java/Storage.java\n#\tsrc/main/java/Task.java\n#\tsrc/main/java/Todo.java\n","fileTypesAndContributionMap":{}}]},{"date":"2023-09-07","commitResults":[{"hash":"878b99ae1fa12e428462d64fed59eb45f5dbf409","isMergeCommit":false,"messageTitle":"Make improvements based on peer review","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":245}}},{"hash":"6a5ac27f124a5a31fccefd7a05f0ac5e2be7a523","isMergeCommit":false,"messageTitle":"Add package refinements","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":2}}},{"hash":"c2e1875acec467de28b1dd3ef71411ac01e84c60","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-08","commitResults":[{"hash":"c6a31884df5cd6e5747bf08ed0f72ce88fd5e1cc","isMergeCommit":false,"messageTitle":"Fix bugs and gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-10","commitResults":[{"hash":"35fa0ff5f7b979c75ff9e2a72e0143c1966c3a36","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":36,"deletions":3}}},{"hash":"e0519d69f5d5ce72ec0d9979d91b5fc8e797eac4","isMergeCommit":false,"messageTitle":"Add base case for find feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":3}}},{"hash":"dff63031ae6a271911234711abdf2f112f2bb940","isMergeCommit":false,"messageTitle":"Add checkstyle files and fix code according to coding standards","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":52,"deletions":45}}},{"hash":"c16fafc92ae72cddbfce9ff7e21c090f5c6af5bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-checkstyle\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-14","commitResults":[{"hash":"a2a4617193b001a28b1f5d251e66bfaa22cd1d02","isMergeCommit":false,"messageTitle":"Implement functional GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":172,"deletions":4}}}]},{"date":"2023-09-15","commitResults":[{"hash":"44e0866e66c3826369f4ba55a6cd347b92c95e16","isMergeCommit":false,"messageTitle":"Fix GUI bugs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":45}}}]},{"date":"2023-09-17","commitResults":[{"hash":"055946d2f4a9e4684be70393c0c56f59306915aa","isMergeCommit":false,"messageTitle":"Implement GUI using FXML","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":35,"deletions":0},"java":{"insertions":142,"deletions":144}}},{"hash":"1fe0df559a72542e3724d5982baaceab8d4d79a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-18","commitResults":[{"hash":"3794342e7b5da70b3eafce72b60f1fa7e7f0efe6","isMergeCommit":false,"messageTitle":"Find command: make matching case-insensitive","messageBody":"Find command is case-sensitive.\n\nA case-insensitive find is more user-friendly because users cannot be\nexpected to remember the exact case of the keywords.\n\nLet\u0027s update the search algorithm to use case-insensitive matching.\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":31}}},{"hash":"a6adee9590a5bc6376580decd60328d7dcbe229d","isMergeCommit":false,"messageTitle":"FXML goodbye: close application","messageBody":"command \"bye\" prints goodbye UI but does not exit app.\n\nThe application should close automatically upon \"bye\" command.\n\nLet\u0027s update the exitCommand to exit the application.\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":25,"deletions":43}}}]},{"date":"2023-09-22","commitResults":[{"hash":"0f31ff118dbb52370972c967f61b78b204f8b2f2","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"94f1d231b282d59191d753f9aa2e2503984d4e5b","isMergeCommit":true,"messageTitle":"Merge pull request #2 from peiran18/branch-A-Assertions","messageBody":"Add assertions","fileTypesAndContributionMap":{}},{"hash":"047da4573b53f4faa7b8655b04f347f8336236ad","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/peiran18/ip","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{}},{"hash":"da7f86b2bbefe456ca15e31c60dfa30056261857","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":62}}},{"hash":"f64e8826ef1df67338e4586110ca1cbfffea3966","isMergeCommit":true,"messageTitle":"Merge pull request #3 from peiran18/branch-A-CodeQuality","messageBody":"Improve code quality","fileTypesAndContributionMap":{}},{"hash":"1721175beab0e927f9183ee8deb09532d411f116","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/peiran18/ip","messageBody":"# Conflicts:\n#\tsrc/main/java/potato/Main.java\n#\tsrc/main/java/potato/MainWindow.java\n#\tsrc/main/java/potato/Potato.java\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-23","commitResults":[{"hash":"dec3937bfcf76383f9b12e871f2a1ca2c590ee1a","isMergeCommit":false,"messageTitle":"Add priority feature to label tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":22}}},{"hash":"39bc13de6316c03590ecfae8ada9c86c570342e3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-priority\u0027","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-25","commitResults":[{"hash":"452bdf4f6df0b71d9dfbf29c2c9fe06959ed258e","isMergeCommit":false,"messageTitle":"Fix hello and goodbye commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":9}}},{"hash":"86f27a1fccdc66d16c022eee9a99064050d4f6e1","isMergeCommit":false,"messageTitle":"Add readme","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":82,"deletions":15}}},{"hash":"1da8ece758f2d89bf6c5565efba319f458408fb2","isMergeCommit":false,"messageTitle":"Improve documention","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":365,"deletions":103}}},{"hash":"0125c0f25833e88d3d4a6b5b3bd384086310af10","isMergeCommit":false,"messageTitle":"Minor bug fix","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":18}}}]},{"date":"2023-09-26","commitResults":[{"hash":"baea9f3116c0186916746a06cadbd94935fa0287","isMergeCommit":false,"messageTitle":"Fix exceptions","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":8,"deletions":0},"java":{"insertions":16,"deletions":14}}},{"hash":"efcf609237556aa53a64654767b161e7d8287075","isMergeCommit":false,"messageTitle":"Add more exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":16}}}]}]},"authorFileTypeContributionMap":{"peiran18":{"java":1208,"md":82,"fxml":35,"sh":6,"bat":0,"gradle":21,"txt":6}},"authorContributionVariance":{"peiran18":31735.785},"authorDisplayNameMap":{"peiran18":"CS2103T-W12-3 CHEN..IRAN"}} diff --git a/rayyan35p_ip_master/authorship.json b/rayyan35p_ip_master/authorship.json index be25fc70..50ec5089 100644 --- a/rayyan35p_ip_master/authorship.json +++ b/rayyan35p_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":"-"},"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":"rayyan35p"},"content":"3. After that, locate the `src/main/java/bob/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-09"},{"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":{"rayyan35p":1,"-":23}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-09"},{"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":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" mainClass.set(\"bob.Launcher\")","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-09-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":"checkstyle {","lastModifiedDate":"2023-09-09"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-09"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":22,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"# chatBob User Guide","lastModifiedDate":"2023-09-24"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"chatBob is a desktop application for managing your tasks. While it has a GUI, most of the user interactions happen using","lastModifiedDate":"2023-09-24"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"a CLI (Command Line Interface.)","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"## Quick Start","lastModifiedDate":"2023-09-24"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"1. Ensure you have Java `11` or above installed in your computer.","lastModifiedDate":"2023-09-24"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"2. Download the latest `duke.jar` from [here](https://github.com/rayyan35p/ip/releases).","lastModifiedDate":"2023-09-24"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"3. Copy the file to the folder you want to use as the home folder for your application.","lastModifiedDate":"2023-09-24"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use ","lastModifiedDate":"2023-09-24"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" `java -jar duke.jar` ","lastModifiedDate":"2023-09-24"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" command to run the application. ","lastModifiedDate":"2023-09-24"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" A GUI similar to the one below should appear in a few seconds. ","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" ![alt text](Ui.png)","lastModifiedDate":"2023-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"\u003e Important Notes","lastModifiedDate":"2023-09-24"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"\u003e + Words in `UPPER_CASE` are the parameters to be supplied by user ","lastModifiedDate":"2023-09-24"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" \u003e e.g. in `deadline NAME /by DATE TIME`, `NAME`, `DATE` and `TIME` are parameters which can be used as","lastModifiedDate":"2023-09-24"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" \u003e`deadline submit homework /by 30/09/2023 2359`","lastModifiedDate":"2023-09-24"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":"\u003e + Parameters must be in the order specified, or the command will not work.","lastModifiedDate":"2023-09-24"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":"\u003e + All commands must be keyed in exactly as specified with no extra parameters.","lastModifiedDate":"2023-09-24"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"### Adding a task to do: `todo`","lastModifiedDate":"2023-09-24"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"Adds a task to do to your list.","lastModifiedDate":"2023-09-24"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":"Format: `todo DESCRIPTION`","lastModifiedDate":"2023-09-24"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"+ `DESCRIPTION` is the description of the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":"### Adding a task with a deadline: `deadline`","lastModifiedDate":"2023-09-24"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":"Adds a task that has a deadline to your list.","lastModifiedDate":"2023-09-24"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":"Format: `deadline DESCRIPTION /by DATE TIME`","lastModifiedDate":"2023-09-24"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":"+ `DESCRIPTION` is the description of the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":"+ `DATE` is the date of the deadline. It is in the format `dd/MM/yyyy`.","lastModifiedDate":"2023-09-24"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":"+ `TIME` is the time of the deadline. It is in the format `HH mm`.","lastModifiedDate":"2023-09-24"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":"### Adding a task to do: `event`","lastModifiedDate":"2023-09-24"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":"Adds an event that has a start and end date time to do to your list.","lastModifiedDate":"2023-09-24"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":"Format: `event DESCRIPTION /from STARTDATE STARTTIME /to ENDDATE ENDTIME`","lastModifiedDate":"2023-09-24"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":"+ `DESCRIPTION` is the description of the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":"+ `STARTDATE` is the starting date of the event. It is in the format `dd/MM/yyyy`.","lastModifiedDate":"2023-09-24"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":"+ `STARTTIME` is the starting time of the event. It is in the format `HH mm`.","lastModifiedDate":"2023-09-24"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":"+ `ENDDATE` is the ending date of the event. It is in the format `dd/MM/yyyy`.","lastModifiedDate":"2023-09-24"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":"+ `ENDTIME` is the ending time of the event. It is in the format `dd/MM/yyyy`.","lastModifiedDate":"2023-09-24"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":"### Listing all tasks: `list`","lastModifiedDate":"2023-09-24"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":"Shows a list of all tasks stored by Bob.","lastModifiedDate":"2023-09-24"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":"Format: `list`","lastModifiedDate":"2023-09-24"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":"![alt text](list.png)","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":"### Mark a task as done: `mark`","lastModifiedDate":"2023-09-24"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":"Set a task in the list as done.","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":"Format: `mark TASKNUMBER`","lastModifiedDate":"2023-09-24"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":"+ `TASKNUMBER` is the index of the task in the list that you want to mark as done.","lastModifiedDate":"2023-09-24"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":"### Mark a task as not done: `unmark`","lastModifiedDate":"2023-09-24"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":"Set a task in the list as not done.","lastModifiedDate":"2023-09-24"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":"Format: `unmark TASKNUMBER`","lastModifiedDate":"2023-09-24"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":"+ `TASKNUMBER` is the index of the task in the list that you want to mark as not done.","lastModifiedDate":"2023-09-24"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":"### Delete a task: `delete`","lastModifiedDate":"2023-09-24"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":"Remove a task from the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":"Format: `delete TASKNUMBER`","lastModifiedDate":"2023-09-24"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":"+ `TASKNUMBER` is the index of the task in the list that you want to remove.","lastModifiedDate":"2023-09-24"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":"### Find a task: `find`","lastModifiedDate":"2023-09-24"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":"Find tasks that contain a given description.","lastModifiedDate":"2023-09-24"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":"Format: `find STRINGTOFIND`","lastModifiedDate":"2023-09-24"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":"+ `STRINGTOFIND` is a string of words that should be contained in the description of tasks that you are looking for.","lastModifiedDate":"2023-09-24"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":"Examples:","lastModifiedDate":"2023-09-24"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":"+ `find buy` returns tasks containing `buy` in their descriptions.","lastModifiedDate":"2023-09-24"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" ![alt text](find.png)","lastModifiedDate":"2023-09-24"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":"### Update a task: `update`","lastModifiedDate":"2023-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":"Update a given task in the list with new details. By using update, you do not need to delete tasks to change them.","lastModifiedDate":"2023-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":"Format: `update TASKNUMBER NEWTASK`","lastModifiedDate":"2023-09-24"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":"+ `TASKNUMBER` is the index of the task in the list that you want to update.","lastModifiedDate":"2023-09-24"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":"+ `NEWTASK` is a command that you would use to create a task with the newer details.","lastModifiedDate":"2023-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":"Examples:","lastModifiedDate":"2023-09-24"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":"+ `update 2 todo do final papers` updates the second task in the list to become a new task with the specified details.","lastModifiedDate":"2023-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":"### Tell you that you can fix it: `canWeFixIt()`","lastModifiedDate":"2023-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":"If you need some motivation to do your tasks, just ask Bob `canWeFixIt` because he will always return `true`.","lastModifiedDate":"2023-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":"### Exiting the program: `bye`","lastModifiedDate":"2023-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":"Exits the program.","lastModifiedDate":"2023-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":"### Saving to a local file","lastModifiedDate":"2023-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":"Bob instantaneously saves all your tasks in a file in data/duke.txt everytime a command is entered, so you don`t ","lastModifiedDate":"2023-09-24"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":"have to worry about losing all the tasks you just added!","lastModifiedDate":"2023-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":"### Acknowledgements","lastModifiedDate":"2023-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":"README inspired by [aslam341](https://github.com/aslam341/ip/tree/master/docs)","lastModifiedDate":"2023-09-24"}],"authorContributionMap":{"rayyan35p":103,"-":15}},{"path":"src/main/java/bob/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.Command;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import bob.storage.Storage;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" * Represents the main chatbot logic.","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" private Storage storage;","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" private TaskList list;","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" * Initialise a new Duke object with its class fields.","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public void init() {","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" this.list \u003d new TaskList(this.storage);","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" list.open();","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" public void end() {","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" this.list.close();","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" this.init();","lastModifiedDate":"2023-09-09"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" String response;","lastModifiedDate":"2023-09-09"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"canWeFixIt()\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" return \"true\";","lastModifiedDate":"2023-09-24"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" Command command \u003d Parser.parse(input, false);","lastModifiedDate":"2023-09-23"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" response \u003d command.execute(list);","lastModifiedDate":"2023-09-17"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-09"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" return e.toString();","lastModifiedDate":"2023-09-17"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" return e.toString();","lastModifiedDate":"2023-09-24"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" this.end();","lastModifiedDate":"2023-09-09"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" assert response !\u003d null : \"response should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" return response;","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"rayyan35p":48,"-":2}},{"path":"src/main/java/bob/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class Launcher {","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":12}},{"path":"src/main/java/bob/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.ui.MainWindow;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" stage.setTitle(\"chatBob\");","lastModifiedDate":"2023-09-24"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" stage.show();","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":33}},{"path":"src/main/java/bob/data/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" * Closes the GUI.","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public ByeCommand() {","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) {","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" return list.close();","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":17}},{"path":"src/main/java/bob/data/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" * Represents a command that can be executed and the behavior of the execution is dependent on the command type.","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" public Command() {}","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" public abstract String execute(TaskList list) throws DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":12}},{"path":"src/main/java/bob/data/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Add a DeadlineTask into the list.","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Creates a DeadlineCommand that creates a DeadlineTask given the specified input.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input with the details of the DeadlineTask.","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" public DeadlineCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return list.addTaskWithCommand(Parser.CommandType.DEADLINE, this.input);","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":25}},{"path":"src/main/java/bob/data/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-23"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" * Deletes a task in the list.","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * Creates a DeleteCommand that will delete a task based on the specified input.","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input indicating which task to be deleted.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" return list.deleteTask(this.input);","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"rayyan35p":24}},{"path":"src/main/java/bob/data/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Add an EventTask into the list.","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Creates an EventCommand that creates an EventTask given the specified input.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input with the details of the EventTask.","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" public EventCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return list.addTaskWithCommand(Parser.CommandType.EVENT, input);","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":25}},{"path":"src/main/java/bob/data/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" * Finds a task in the list matching a given description.","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" private String taskToFind;","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" * Creates a FindCommand that finds a certain task based on the specified input.","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * @param taskToFind The user input with the details of the task to be found.","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" public FindCommand(String taskToFind) {","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" this.taskToFind \u003d taskToFind;","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) {","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" return list.find(this.taskToFind);","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":24}},{"path":"src/main/java/bob/data/command/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-24"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-24"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" * Represents a command that was wrongly input.","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2023-09-24"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" private String error;","lastModifiedDate":"2023-09-24"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-24"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" * Creates a new InvalidCommand that is invalid due to the specified error.","lastModifiedDate":"2023-09-24"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * @param error The error which caused this InvalidCommand to be created.","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" public InvalidCommand(String error) {","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" this.error \u003d error;","lastModifiedDate":"2023-09-24"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-24"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-24"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" * @param list","lastModifiedDate":"2023-09-24"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" * @return","lastModifiedDate":"2023-09-24"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-24"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) {","lastModifiedDate":"2023-09-24"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" return \"Invalid command:\" + error;","lastModifiedDate":"2023-09-24"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-24"}],"authorContributionMap":{"rayyan35p":28}},{"path":"src/main/java/bob/data/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" * Lists out all the task in the list.","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public ListCommand() {","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) {","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" return list.toString();","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":16}},{"path":"src/main/java/bob/data/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-23"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" * Marks a task in the list as completed.","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * Creates a MarkCommand that marks a specified task as completed.","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input indicating which task to mark as completed.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public MarkCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return list.setTaskComplete(input);","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":25}},{"path":"src/main/java/bob/data/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Add a TodoTask into the list.","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Creates a TodoCommand that creates an TodoTask given the specified input.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input with the details of the TodoTask.","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" public TodoCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return list.addTaskWithCommand(Parser.CommandType.TODO, this.input);","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":25}},{"path":"src/main/java/bob/data/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" * Marks a task in the list as incomplete.","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * Creates an UnmarkCommand that marks a task in the list as incomplete.","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input indicating which task to mark as incomplete.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public UnmarkCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" return list.setTaskIncomplete(this.input);","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":23}},{"path":"src/main/java/bob/data/command/UpdateCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" * Updates a task in the list with other details.","lastModifiedDate":"2023-09-24"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"public class UpdateCommand extends Command {","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private Command newTask;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Creates a new UpdateCommand that updates a task in the TaskList with different details.","lastModifiedDate":"2023-09-24"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" * @param taskNumber The index of the task to be updated.","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" * @param newTask The corresponding command call of the updated task.","lastModifiedDate":"2023-09-24"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" public UpdateCommand(int taskNumber, Command newTask) {","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" this.newTask \u003d newTask;","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" int listSize \u003d list.getSize();","lastModifiedDate":"2023-09-23"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" if (this.taskNumber - 1 \u003e\u003d listSize) {","lastModifiedDate":"2023-09-23"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Index out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" newTask.execute(list);","lastModifiedDate":"2023-09-17"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" list.swap(this.taskNumber - 1, listSize);","lastModifiedDate":"2023-09-23"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" list.deleteTaskAtIndex(list.getSize() - 1);","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" return \"Updated task!\";","lastModifiedDate":"2023-09-17"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"rayyan35p":33}},{"path":"src/main/java/bob/data/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.exception;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" * Represents an error specific to Duke.","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new exception with the specified detail message.","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" * @param message The detail message.","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" super(message);","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"rayyan35p":15}},{"path":"src/main/java/bob/data/task/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Represents a DeadlineTask that is stored in the TaskList.","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" /** Date of the deadline. */","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /** Format for the DateTimeFormatter to follow. */","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" private DateTimeFormatter formatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new DeadlineTask with the specified task description and its deadline date.","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" * @param deadlineDate The datetime of the deadline of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public DeadlineTask(String description, String deadlineDate) throws DateTimeParseException {","lastModifiedDate":"2023-09-24"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" this.deadlineDate \u003d LocalDateTime.parse(deadlineDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" * Returns the type of task as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" * @return The type of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" return \"Deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" * Returns the formatted(dd/MM/yyyy HHmm) deadline date as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" * @return Datetime of the deadline.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" return formatter.format(this.deadlineDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" * Returns the string representation of the DeadlineTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" * @return A string representation of this DeadlineTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" DateTimeFormatter stringFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" return \"[D]\" + super.toString() + \" (by: \" + stringFormatter.format(this.deadlineDate) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-23"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" * Checks if this DeadlineTask is the same as a specified object.","lastModifiedDate":"2023-09-23"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" * @param obj The object to be compared with.","lastModifiedDate":"2023-09-23"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" * @return true if they are both the same instance or have the same contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" * false if they have different contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-23"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" if (obj instanceof DeadlineTask) {","lastModifiedDate":"2023-09-23"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask object \u003d (DeadlineTask) obj;","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" if (this.deadlineDate.equals(object.deadlineDate) \u0026\u0026 super.equals(object)) {","lastModifiedDate":"2023-09-23"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":80}},{"path":"src/main/java/bob/data/task/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" * Represents an EventTask that is stored in the TaskList.","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /** The start date of the EventTask. */","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" /** The end date of the EventTask. */","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" /** The format for the DateTimeFormatter to follow. */","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" private DateTimeFormatter formatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" * Constructs an EventTask with the specified description, start date, and end date.","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" * @param startDate The start datetime of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" * @param endDate The end datetime of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If the end datetime is before or the same as the start datetime.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" public EventTask(String description, String startDate, String endDate) throws DukeException, DateTimeParseException {","lastModifiedDate":"2023-09-24"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" if (end.isBefore(start)) {","lastModifiedDate":"2023-09-17"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Your start date is either the same or after your end date!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" this.startDate \u003d start;","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" this.endDate \u003d end;","lastModifiedDate":"2023-09-17"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" * Returns the type of task as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" * @return The type of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" return \"Event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" * Returns the formatted(dd/MM/yyyy HHmm) deadline date as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" * @return Datetime of the deadline.","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" return formatter.format(this.startDate) + \",\" + formatter.format(this.endDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" * Returns the string representation of the EventTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" * @return A string representation of this EventTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" DateTimeFormatter stringFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" return \"[E]\" + super.toString() + \" (from: \" + stringFormatter.format(this.startDate)","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" + \" to: \" + stringFormatter.format(this.endDate) + \")\";","lastModifiedDate":"2023-09-15"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" * Checks if this EventTask is the same as a specified object.","lastModifiedDate":"2023-09-23"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" * @param obj The object to be compared with.","lastModifiedDate":"2023-09-23"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" * @return true if they are both the same instance or have the same contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" * false if they have different contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-23"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" if (obj instanceof EventTask) {","lastModifiedDate":"2023-09-23"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" EventTask object \u003d (EventTask) obj;","lastModifiedDate":"2023-09-23"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" boolean sameContents \u003d this.startDate.equals(object.startDate)","lastModifiedDate":"2023-09-23"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" \u0026\u0026 this.endDate.equals(object.endDate);","lastModifiedDate":"2023-09-23"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" if (sameContents \u0026\u0026 super.equals(object)) {","lastModifiedDate":"2023-09-23"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":96}},{"path":"src/main/java/bob/data/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" * Represents the base logic for task classes.","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" static final String INCOMPLETE \u003d \"0\";","lastModifiedDate":"2023-09-23"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" static final String COMPLETED \u003d \"1\";","lastModifiedDate":"2023-09-23"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" /** The description of the task. */","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" /** The completion of the task. */","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new Task based on the specified description.","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" * Set isDone to true.","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" public void setDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" * Set isDone to false.","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" * Returns the type of task as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" * @return The type of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" public abstract String getType();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" * Returns the formatted(dd/MM/yyyy HHmm) deadline date as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" * @return Datetime of the deadline.","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" public abstract String getDateTime();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" * Returns the string representation of the Task. Box will be \"[ ]\" if isDone is false and \"[X]\" if true.","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" * @return A string representation of this Task.","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" return \"[X] \" + description;","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" if (obj instanceof Task) {","lastModifiedDate":"2023-09-23"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" Task object \u003d (Task) obj;","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" boolean sameDescription \u003d this.description.equals(object.description);","lastModifiedDate":"2023-09-23"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" boolean sameCompletion \u003d this.isDone \u003d\u003d object.isDone;","lastModifiedDate":"2023-09-23"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" if (sameDescription \u0026\u0026 sameCompletion) {","lastModifiedDate":"2023-09-23"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" if (this.description \u003d\u003d null || object.description \u003d\u003d null) {","lastModifiedDate":"2023-09-23"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" * Returns a string representation of a task that is in the format needed for storing and reading from a file.","lastModifiedDate":"2023-09-03"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" * @return A string representation of a task in a file storing/reading format.","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" String type \u003d this.getType();","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" String completed \u003d INCOMPLETE;","lastModifiedDate":"2023-09-17"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" completed \u003d COMPLETED;","lastModifiedDate":"2023-09-17"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" String title \u003d this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" String dateTime \u003d this.getDateTime();","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":" if (this.getDateTime().length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" output.append(type + \",\" + completed + \",\" + title + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-09-15"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" output.append(type + \",\" + completed + \",\" + title + \",\" + dateTime + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" return output.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":109}},{"path":"src/main/java/bob/data/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import bob.storage.Storage;","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Represents a TaskList that contains the tasks and writes to a specified file.","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"public class TaskList {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" /** The ArrayList for storing all the tasks. */","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" /** The storage object for writing/reading the task to/from. */","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" private Storage storage;","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new TaskList.","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" public TaskList() {","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new TaskList based on the specified file.","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" * @param storage The storage class which handles the storage operations.","lastModifiedDate":"2023-09-15"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" public TaskList(Storage storage) {","lastModifiedDate":"2023-09-15"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" assert storage !\u003d null : \"storage should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-09-15"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" * Reads the contents of the file and stores it into the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" public void open() {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-17"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" assert tasks !\u003d null : \"tasks should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" this.storage.readFromFile(this.tasks);","lastModifiedDate":"2023-09-15"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"An error occurred when trying to find the file.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" * Adds a specified task to the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" * @param task The task to be added to the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" public void addTask(Task task, boolean isMuted) {","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" assert task !\u003d null : \"task should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" if (!isMuted) {","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Now you have \" + this.tasks.size() + \" task(s) in the list.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" * Adds a task to the ArrayList based on the specified command and input.","lastModifiedDate":"2023-09-03"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" * @param command The command that determines which subclass of Task will be instantiated.","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" * @param input The input needed for the instantiation of the Task.","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" * @return A string describing the task that was added.","lastModifiedDate":"2023-09-17"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If the EventTask is instantiated with invalid dates.","lastModifiedDate":"2023-09-03"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" public String addTaskWithCommand(Parser.CommandType command, String input) throws DukeException, DateTimeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" assert command !\u003d null : \"command should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" Task taskToAdd;","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" String taskDescription;","lastModifiedDate":"2023-09-15"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" String[] taskDescriptionArray;","lastModifiedDate":"2023-09-15"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" String toDoTaskDescription \u003d input.substring(5);","lastModifiedDate":"2023-09-23"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" taskToAdd \u003d new ToDoTask(toDoTaskDescription);","lastModifiedDate":"2023-09-23"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" String deadlineTaskDescription \u003d input.substring(9);","lastModifiedDate":"2023-09-23"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" taskDescriptionArray \u003d deadlineTaskDescription.split(\" /by \");","lastModifiedDate":"2023-09-23"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" taskToAdd \u003d new DeadlineTask(taskDescriptionArray[0], taskDescriptionArray[1]);","lastModifiedDate":"2023-09-15"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" String eventTaskDescription \u003d input.substring(6);","lastModifiedDate":"2023-09-23"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" taskDescriptionArray \u003d eventTaskDescription.split(\" /from \");","lastModifiedDate":"2023-09-23"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" String description \u003d taskDescriptionArray[0];","lastModifiedDate":"2023-09-15"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" String[] dateArray \u003d taskDescriptionArray[1].split(\" /to \");","lastModifiedDate":"2023-09-15"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" taskToAdd \u003d new EventTask(description, dateArray[0], dateArray[1]);","lastModifiedDate":"2023-09-15"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" default:","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"No such command found.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" this.tasks.add(taskToAdd);","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" return \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2023-09-17"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" + taskToAdd + \"\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":" + \"Now you have \" + this.tasks.size() + \" task(s) in the list.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":" * Set the task at the index, based on the specified input string, of the ArrayList to be completed.","lastModifiedDate":"2023-09-03"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":" * @param input The input string containing the index of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":115,"author":{"gitId":"rayyan35p"},"content":" * @return A string representing the task that was set as completed.","lastModifiedDate":"2023-09-23"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If the task number is out of range of the list.","lastModifiedDate":"2023-09-23"},{"lineNumber":117,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":" public String setTaskComplete(String input) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":119,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":120,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":121,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2023-09-23"},{"lineNumber":122,"author":{"gitId":"rayyan35p"},"content":" if (taskNo \u003c 1 || taskNo \u003e this.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":123,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Task number out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":124,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":125,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.tasks.get(taskNo - 1);","lastModifiedDate":"2023-09-23"},{"lineNumber":126,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":127,"author":{"gitId":"rayyan35p"},"content":" return \"OK, I\u0027ve marked this task as done:\\n\" + task;","lastModifiedDate":"2023-09-17"},{"lineNumber":128,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":129,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"rayyan35p"},"content":" * Set the task at the index, based on the specified input string, of the ArrayList to be incomplete.","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":132,"author":{"gitId":"rayyan35p"},"content":" * @param input The input string containing the index of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":133,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":134,"author":{"gitId":"rayyan35p"},"content":" public String setTaskIncomplete(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":135,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":136,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":138,"author":{"gitId":"rayyan35p"},"content":" if (taskNo \u003c 1 || taskNo \u003e this.getSize()) {","lastModifiedDate":"2023-09-24"},{"lineNumber":139,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Task number out of range!\");","lastModifiedDate":"2023-09-24"},{"lineNumber":140,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":141,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.tasks.get(taskNo);","lastModifiedDate":"2023-09-03"},{"lineNumber":142,"author":{"gitId":"rayyan35p"},"content":" task.setNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":143,"author":{"gitId":"rayyan35p"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\" + task;","lastModifiedDate":"2023-09-17"},{"lineNumber":144,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":146,"author":{"gitId":"rayyan35p"},"content":" * Removes the task at an index, based on the specified input, of the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":147,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"rayyan35p"},"content":" * @param input The input string containing the index of the task to be removed.","lastModifiedDate":"2023-09-03"},{"lineNumber":149,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":150,"author":{"gitId":"rayyan35p"},"content":" public String deleteTask(String input) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":151,"author":{"gitId":"rayyan35p"},"content":" int originalSize \u003d tasks.size();","lastModifiedDate":"2023-09-24"},{"lineNumber":152,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":153,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":154,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2023-09-23"},{"lineNumber":155,"author":{"gitId":"rayyan35p"},"content":" if (taskNo \u003c 1 || taskNo \u003e this.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":156,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Task number out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":157,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":158,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.tasks.get(taskNo - 1);","lastModifiedDate":"2023-09-23"},{"lineNumber":159,"author":{"gitId":"rayyan35p"},"content":" this.tasks.remove(taskNo - 1);","lastModifiedDate":"2023-09-23"},{"lineNumber":160,"author":{"gitId":"rayyan35p"},"content":" assert tasks.size() \u003d\u003d originalSize - 1 : \"task should not exist in the list anymore\";","lastModifiedDate":"2023-09-24"},{"lineNumber":161,"author":{"gitId":"rayyan35p"},"content":" return \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-09-17"},{"lineNumber":162,"author":{"gitId":"rayyan35p"},"content":" + task + \"\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":163,"author":{"gitId":"rayyan35p"},"content":" + \"Now you have \" + this.tasks.size() + \" task(s) in the list.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":164,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":166,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-23"},{"lineNumber":167,"author":{"gitId":"rayyan35p"},"content":" * Delete a task in the list given a specified index","lastModifiedDate":"2023-09-23"},{"lineNumber":168,"author":{"gitId":"rayyan35p"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-09-23"},{"lineNumber":169,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If the task number is out of the range of the list.","lastModifiedDate":"2023-09-23"},{"lineNumber":170,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-23"},{"lineNumber":171,"author":{"gitId":"rayyan35p"},"content":" public void deleteTaskAtIndex(int index) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":172,"author":{"gitId":"rayyan35p"},"content":" if (index \u003c 0 || index \u003e this.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":173,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Task number out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":174,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":175,"author":{"gitId":"rayyan35p"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-17"},{"lineNumber":176,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":177,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":178,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":179,"author":{"gitId":"rayyan35p"},"content":" * Prints all the tasks contained in the ArrayList in an indexed manner.","lastModifiedDate":"2023-09-03"},{"lineNumber":180,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":181,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-03"},{"lineNumber":182,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":183,"author":{"gitId":"rayyan35p"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-03"},{"lineNumber":184,"author":{"gitId":"rayyan35p"},"content":" return \"No tasks in your list, add some!\";","lastModifiedDate":"2023-09-24"},{"lineNumber":185,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":186,"author":{"gitId":"rayyan35p"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-03"},{"lineNumber":187,"author":{"gitId":"rayyan35p"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":188,"author":{"gitId":"rayyan35p"},"content":" String indexedTask \u003d i + 1 + \".\" + tasks.get(i) + \"\\n\";","lastModifiedDate":"2023-09-17"},{"lineNumber":189,"author":{"gitId":"rayyan35p"},"content":" stringBuilder.append(indexedTask);","lastModifiedDate":"2023-09-17"},{"lineNumber":190,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":191,"author":{"gitId":"rayyan35p"},"content":" stringBuilder.deleteCharAt(stringBuilder.length() - 1);","lastModifiedDate":"2023-09-03"},{"lineNumber":192,"author":{"gitId":"rayyan35p"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-03"},{"lineNumber":193,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":194,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":195,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":196,"author":{"gitId":"rayyan35p"},"content":" * Saves all tasks in the list to the file.","lastModifiedDate":"2023-09-17"},{"lineNumber":197,"author":{"gitId":"rayyan35p"},"content":" * @return A string with the farewell message.","lastModifiedDate":"2023-09-17"},{"lineNumber":198,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":199,"author":{"gitId":"rayyan35p"},"content":" public String close() {","lastModifiedDate":"2023-09-17"},{"lineNumber":200,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":201,"author":{"gitId":"rayyan35p"},"content":" assert this.storage.getFile().exists() : \"file should exist so that it can be written to\";","lastModifiedDate":"2023-09-17"},{"lineNumber":202,"author":{"gitId":"rayyan35p"},"content":" FileWriter writer \u003d new FileWriter(this.storage.getFile());","lastModifiedDate":"2023-09-15"},{"lineNumber":203,"author":{"gitId":"rayyan35p"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-03"},{"lineNumber":204,"author":{"gitId":"rayyan35p"},"content":" writer.write(task.toFileString());","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"rayyan35p"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"An error occurred while saving your tasks.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":211,"author":{"gitId":"rayyan35p"},"content":" return \"Bye!\";","lastModifiedDate":"2023-09-17"},{"lineNumber":212,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":213,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":214,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":215,"author":{"gitId":"rayyan35p"},"content":" * Returns the size of the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":216,"author":{"gitId":"rayyan35p"},"content":" * @return An integer representing the size of the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":217,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":218,"author":{"gitId":"rayyan35p"},"content":" public int getSize() {","lastModifiedDate":"2023-09-03"},{"lineNumber":219,"author":{"gitId":"rayyan35p"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-03"},{"lineNumber":220,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":221,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":222,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":223,"author":{"gitId":"rayyan35p"},"content":" * Returns the String representation of all the tasks that are similar to the specified input in an indexed manner.","lastModifiedDate":"2023-09-03"},{"lineNumber":224,"author":{"gitId":"rayyan35p"},"content":" * @param input The String to be compared with other tasks.","lastModifiedDate":"2023-09-03"},{"lineNumber":225,"author":{"gitId":"rayyan35p"},"content":" * @return The String representation of matching tasks.","lastModifiedDate":"2023-09-03"},{"lineNumber":226,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":227,"author":{"gitId":"rayyan35p"},"content":" public String find(String input) {","lastModifiedDate":"2023-09-03"},{"lineNumber":228,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":229,"author":{"gitId":"rayyan35p"},"content":" String toFind \u003d input.substring(5);","lastModifiedDate":"2023-09-03"},{"lineNumber":230,"author":{"gitId":"rayyan35p"},"content":" TaskList tasksFound \u003d new TaskList();","lastModifiedDate":"2023-09-03"},{"lineNumber":231,"author":{"gitId":"rayyan35p"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-09-03"},{"lineNumber":232,"author":{"gitId":"rayyan35p"},"content":" if (task.toString().contains(toFind)) {","lastModifiedDate":"2023-09-03"},{"lineNumber":233,"author":{"gitId":"rayyan35p"},"content":" tasksFound.addTask(task, true);","lastModifiedDate":"2023-09-03"},{"lineNumber":234,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":235,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":236,"author":{"gitId":"rayyan35p"},"content":" if (tasksFound.getSize() \u003d\u003d 0) {","lastModifiedDate":"2023-09-03"},{"lineNumber":237,"author":{"gitId":"rayyan35p"},"content":" return \"No tasks found matching that description.\";","lastModifiedDate":"2023-09-03"},{"lineNumber":238,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":239,"author":{"gitId":"rayyan35p"},"content":" return tasksFound.toString();","lastModifiedDate":"2023-09-03"},{"lineNumber":240,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":241,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":242,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":243,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":244,"author":{"gitId":"rayyan35p"},"content":" * Swaps two tasks in the taskList.","lastModifiedDate":"2023-09-22"},{"lineNumber":245,"author":{"gitId":"rayyan35p"},"content":" * @param firstTaskIndex Index of the first task to be swapped.","lastModifiedDate":"2023-09-22"},{"lineNumber":246,"author":{"gitId":"rayyan35p"},"content":" * @param secondTaskIndex Index of the second task to be swapped.","lastModifiedDate":"2023-09-22"},{"lineNumber":247,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":248,"author":{"gitId":"rayyan35p"},"content":" public void swap(int firstTaskIndex, int secondTaskIndex) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":249,"author":{"gitId":"rayyan35p"},"content":" if (firstTaskIndex \u003c 0 || firstTaskIndex \u003e this.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":250,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"First task number out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":251,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":252,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":253,"author":{"gitId":"rayyan35p"},"content":" if (secondTaskIndex \u003c 0 || secondTaskIndex \u003e this.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":254,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Second task number out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":255,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":256,"author":{"gitId":"rayyan35p"},"content":" Task temp \u003d tasks.get(firstTaskIndex);","lastModifiedDate":"2023-09-17"},{"lineNumber":257,"author":{"gitId":"rayyan35p"},"content":" tasks.set(firstTaskIndex, tasks.get(secondTaskIndex));","lastModifiedDate":"2023-09-17"},{"lineNumber":258,"author":{"gitId":"rayyan35p"},"content":" tasks.set(secondTaskIndex, temp);","lastModifiedDate":"2023-09-17"},{"lineNumber":259,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":260,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":261,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-23"},{"lineNumber":262,"author":{"gitId":"rayyan35p"},"content":" * Checks if this DeadlineTask is the same as a specified object.","lastModifiedDate":"2023-09-23"},{"lineNumber":263,"author":{"gitId":"rayyan35p"},"content":" * @param obj The object to be compared with.","lastModifiedDate":"2023-09-23"},{"lineNumber":264,"author":{"gitId":"rayyan35p"},"content":" * @return true if they are both the same instance or have the same contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":265,"author":{"gitId":"rayyan35p"},"content":" * false if they have different contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":266,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-23"},{"lineNumber":267,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":268,"author":{"gitId":"rayyan35p"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":269,"author":{"gitId":"rayyan35p"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":270,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":271,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":272,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":273,"author":{"gitId":"rayyan35p"},"content":" if (obj instanceof TaskList) {","lastModifiedDate":"2023-09-23"},{"lineNumber":274,"author":{"gitId":"rayyan35p"},"content":" TaskList object \u003d (TaskList) obj;","lastModifiedDate":"2023-09-23"},{"lineNumber":275,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":276,"author":{"gitId":"rayyan35p"},"content":" if (this.getSize() !\u003d object.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":277,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":278,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":279,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":280,"author":{"gitId":"rayyan35p"},"content":" boolean sameContents \u003d true;","lastModifiedDate":"2023-09-23"},{"lineNumber":281,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":282,"author":{"gitId":"rayyan35p"},"content":" for (int i \u003d 0; i \u003c this.getSize(); i++) {","lastModifiedDate":"2023-09-23"},{"lineNumber":283,"author":{"gitId":"rayyan35p"},"content":" if (this.tasks.get(i).equals(object.tasks.get(i))) {","lastModifiedDate":"2023-09-23"},{"lineNumber":284,"author":{"gitId":"rayyan35p"},"content":" sameContents \u003d false;","lastModifiedDate":"2023-09-23"},{"lineNumber":285,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-23"},{"lineNumber":286,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":287,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":288,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":289,"author":{"gitId":"rayyan35p"},"content":" return sameContents;","lastModifiedDate":"2023-09-23"},{"lineNumber":290,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":291,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":292,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":293,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":293}},{"path":"src/main/java/bob/data/task/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" * Represent a ToDoTask that is contained in the TaskList.","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new ToDoTask based on the specified description.","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" public ToDoTask(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" * Returns the type of task as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" * @return The type of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return \"Todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" * Returns a blank String.","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" * @return A blank String.","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" return \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" * Returns the string representation of the ToDoTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" * @return A string representation of this ToDoTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-23"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" * Checks if this ToDoTask is the same as a specified object.","lastModifiedDate":"2023-09-23"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" * @param obj The object to be compared with.","lastModifiedDate":"2023-09-23"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" * @return true if they are both the same instance or have the same contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" * false if they have different contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-23"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" if (obj instanceof ToDoTask) {","lastModifiedDate":"2023-09-23"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" ToDoTask object \u003d (ToDoTask) obj;","lastModifiedDate":"2023-09-23"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" if (super.equals(object)) {","lastModifiedDate":"2023-09-23"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":67}},{"path":"src/main/java/bob/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.parser;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.ByeCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.Command;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.DeadlineCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.DeleteCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.EventCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.FindCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.ListCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.MarkCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.TodoCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.UnmarkCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.UpdateCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" * Represents a Parser class that parses the input commands given by the user.","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" private static final String INPUT_TASK_NUMBER \u003d \"Input the task number\";","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" private static final String INVALID_COMMAND \u003d \"Invalid command\";","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" private static final String INVALID_TASK_NUMBER \u003d \"The task number was wrongly input.\";","lastModifiedDate":"2023-09-24"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" * Commands to be run based on the user\u0027s input.","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" public static enum CommandType {","lastModifiedDate":"2023-09-23"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" BYE,","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" LIST,","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" MARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" UNMARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" DELETE,","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" FIND,","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" TODO,","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" DEADLINE,","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" EVENT,","lastModifiedDate":"2023-09-17"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" UPDATE","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" * Returns a command to be executed given a specified input provided by the user.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" * @param input The input of the user.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" * @return A command to be executed which is based on the user input.","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If the input is not a valid command.","lastModifiedDate":"2023-09-24"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" public static Command parse(String input, boolean isUpdate) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" CommandType commandType;","lastModifiedDate":"2023-09-17"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" if (isUpdate) {","lastModifiedDate":"2023-09-17"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" commandType \u003d Parser.getTaskCommandType(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-09-17"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" commandType \u003d Parser.getCommandType(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" return validateCommand(commandType, input);","lastModifiedDate":"2023-09-17"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" private static CommandType getCommandType(String input) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" return CommandType.BYE;","lastModifiedDate":"2023-09-17"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" return CommandType.LIST;","lastModifiedDate":"2023-09-17"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" return CommandType.MARK;","lastModifiedDate":"2023-09-17"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" return CommandType.UNMARK;","lastModifiedDate":"2023-09-17"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" return CommandType.DELETE;","lastModifiedDate":"2023-09-17"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"find\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" return CommandType.FIND;","lastModifiedDate":"2023-09-17"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" return CommandType.TODO;","lastModifiedDate":"2023-09-17"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" return CommandType.DEADLINE;","lastModifiedDate":"2023-09-17"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" return CommandType.EVENT;","lastModifiedDate":"2023-09-17"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"update\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" return CommandType.UPDATE;","lastModifiedDate":"2023-09-17"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"No such command.\");","lastModifiedDate":"2023-09-17"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" private static CommandType getTaskCommandType(String input) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" return CommandType.TODO;","lastModifiedDate":"2023-09-17"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" return CommandType.DEADLINE;","lastModifiedDate":"2023-09-17"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" return CommandType.EVENT;","lastModifiedDate":"2023-09-17"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Not a valid task type.\");","lastModifiedDate":"2023-09-17"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" * Validates what the user types by ensuring the proper format for each command type is adhered to.","lastModifiedDate":"2023-09-17"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" * @param commandType The type of command to check the format against.","lastModifiedDate":"2023-09-17"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input.","lastModifiedDate":"2023-09-17"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" * @return A Command that when executed, will act as specified by the user.","lastModifiedDate":"2023-09-17"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException","lastModifiedDate":"2023-09-17"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":" private static Command validateCommand(CommandType commandType, String input) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":" assert commandType !\u003d null : \"command should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d input.split(\" \").length;","lastModifiedDate":"2023-09-17"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":" switch(commandType) {","lastModifiedDate":"2023-09-17"},{"lineNumber":115,"author":{"gitId":"rayyan35p"},"content":" case BYE:","lastModifiedDate":"2023-09-01"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseByeCommand();","lastModifiedDate":"2023-09-24"},{"lineNumber":117,"author":{"gitId":"rayyan35p"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseListCommand();","lastModifiedDate":"2023-09-24"},{"lineNumber":119,"author":{"gitId":"rayyan35p"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseMarkCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":121,"author":{"gitId":"rayyan35p"},"content":" case UNMARK:","lastModifiedDate":"2023-09-24"},{"lineNumber":122,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseUnmarkCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":123,"author":{"gitId":"rayyan35p"},"content":" case DELETE:","lastModifiedDate":"2023-09-24"},{"lineNumber":124,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseDeleteCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":125,"author":{"gitId":"rayyan35p"},"content":" case FIND:","lastModifiedDate":"2023-09-24"},{"lineNumber":126,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseFindCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":127,"author":{"gitId":"rayyan35p"},"content":" case TODO:","lastModifiedDate":"2023-09-24"},{"lineNumber":128,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseTodoCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":129,"author":{"gitId":"rayyan35p"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-24"},{"lineNumber":130,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseDeadlineCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":131,"author":{"gitId":"rayyan35p"},"content":" case EVENT:","lastModifiedDate":"2023-09-24"},{"lineNumber":132,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseEventCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":133,"author":{"gitId":"rayyan35p"},"content":" case UPDATE:","lastModifiedDate":"2023-09-24"},{"lineNumber":134,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseUpdateCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":135,"author":{"gitId":"rayyan35p"},"content":" default:","lastModifiedDate":"2023-09-24"},{"lineNumber":136,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"No such command.\");","lastModifiedDate":"2023-09-24"},{"lineNumber":137,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":138,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":139,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":140,"author":{"gitId":"rayyan35p"},"content":" private static Command parseByeCommand() {","lastModifiedDate":"2023-09-24"},{"lineNumber":141,"author":{"gitId":"rayyan35p"},"content":" return new ByeCommand();","lastModifiedDate":"2023-09-24"},{"lineNumber":142,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":143,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":144,"author":{"gitId":"rayyan35p"},"content":" private static Command parseListCommand() {","lastModifiedDate":"2023-09-24"},{"lineNumber":145,"author":{"gitId":"rayyan35p"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-24"},{"lineNumber":146,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":147,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":148,"author":{"gitId":"rayyan35p"},"content":" private static Command parseMarkCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":149,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":150,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":151,"author":{"gitId":"rayyan35p"},"content":" if (!inputArray[0].equals(\"mark\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":152,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-24"},{"lineNumber":153,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":154,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":155,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INPUT_TASK_NUMBER);","lastModifiedDate":"2023-09-15"},{"lineNumber":156,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":157,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003e 2) {","lastModifiedDate":"2023-09-17"},{"lineNumber":158,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-15"},{"lineNumber":159,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":160,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-24"},{"lineNumber":161,"author":{"gitId":"rayyan35p"},"content":" int taskNumber \u003d Integer.parseInt(inputArray[1].trim());","lastModifiedDate":"2023-09-24"},{"lineNumber":162,"author":{"gitId":"rayyan35p"},"content":" return new MarkCommand(inputArray[0] + \" \" + taskNumber);","lastModifiedDate":"2023-09-24"},{"lineNumber":163,"author":{"gitId":"rayyan35p"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":164,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_TASK_NUMBER);","lastModifiedDate":"2023-09-24"},{"lineNumber":165,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":166,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":167,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":168,"author":{"gitId":"rayyan35p"},"content":" private static Command parseUnmarkCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":169,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":170,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":171,"author":{"gitId":"rayyan35p"},"content":" if (!inputArray[0].equals(\"unmark\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":172,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-23"},{"lineNumber":173,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":174,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":175,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INPUT_TASK_NUMBER);","lastModifiedDate":"2023-09-15"},{"lineNumber":176,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":177,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003e 2) {","lastModifiedDate":"2023-09-17"},{"lineNumber":178,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-15"},{"lineNumber":179,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":180,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-24"},{"lineNumber":181,"author":{"gitId":"rayyan35p"},"content":" int taskNumber \u003d Integer.parseInt(inputArray[1].trim());","lastModifiedDate":"2023-09-24"},{"lineNumber":182,"author":{"gitId":"rayyan35p"},"content":" return new UnmarkCommand(inputArray[0] + \" \" + taskNumber);","lastModifiedDate":"2023-09-24"},{"lineNumber":183,"author":{"gitId":"rayyan35p"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":184,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_TASK_NUMBER);","lastModifiedDate":"2023-09-24"},{"lineNumber":185,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":186,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":187,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":188,"author":{"gitId":"rayyan35p"},"content":" private static Command parseDeleteCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":189,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":190,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":191,"author":{"gitId":"rayyan35p"},"content":" if (!inputArray[0].equals(\"delete\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":192,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-23"},{"lineNumber":193,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":194,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":195,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INPUT_TASK_NUMBER);","lastModifiedDate":"2023-09-15"},{"lineNumber":196,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":197,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003e 2) {","lastModifiedDate":"2023-09-17"},{"lineNumber":198,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-15"},{"lineNumber":199,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":200,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-24"},{"lineNumber":201,"author":{"gitId":"rayyan35p"},"content":" int taskNumber \u003d Integer.parseInt(inputArray[1].trim());","lastModifiedDate":"2023-09-24"},{"lineNumber":202,"author":{"gitId":"rayyan35p"},"content":" return new DeleteCommand(inputArray[0] + \" \" + taskNumber);","lastModifiedDate":"2023-09-24"},{"lineNumber":203,"author":{"gitId":"rayyan35p"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":204,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_TASK_NUMBER);","lastModifiedDate":"2023-09-24"},{"lineNumber":205,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":206,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":207,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":208,"author":{"gitId":"rayyan35p"},"content":" private static Command parseFindCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":209,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":210,"author":{"gitId":"rayyan35p"},"content":" if (!inputArray[0].equals(\"find\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":211,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-23"},{"lineNumber":212,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":213,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":214,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":215,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Input something to search for.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":216,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":217,"author":{"gitId":"rayyan35p"},"content":" return new FindCommand(input);","lastModifiedDate":"2023-09-17"},{"lineNumber":218,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":219,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":220,"author":{"gitId":"rayyan35p"},"content":" private static Command parseTodoCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":221,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":222,"author":{"gitId":"rayyan35p"},"content":" if (!inputArray[0].equals(\"todo\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":223,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-24"},{"lineNumber":224,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":225,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":226,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":227,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-24"},{"lineNumber":228,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":229,"author":{"gitId":"rayyan35p"},"content":" return new TodoCommand(input);","lastModifiedDate":"2023-09-17"},{"lineNumber":230,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":231,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":232,"author":{"gitId":"rayyan35p"},"content":" private static Command parseDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":233,"author":{"gitId":"rayyan35p"},"content":" if (!input.split(\" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":234,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-24"},{"lineNumber":235,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":236,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\"/by\");","lastModifiedDate":"2023-09-24"},{"lineNumber":237,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":238,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":239,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-24"},{"lineNumber":240,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":241,"author":{"gitId":"rayyan35p"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":242,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Deadline task should be in the format: deadline \u003cdescription\u003e /by dd/MM/yy HHmm\");","lastModifiedDate":"2023-09-24"},{"lineNumber":243,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":244,"author":{"gitId":"rayyan35p"},"content":" String taskDescription \u003d inputArray[0].trim();","lastModifiedDate":"2023-09-24"},{"lineNumber":245,"author":{"gitId":"rayyan35p"},"content":" if (taskDescription.length() \u003d\u003d 8) {","lastModifiedDate":"2023-09-24"},{"lineNumber":246,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description cannot be empty\");","lastModifiedDate":"2023-09-24"},{"lineNumber":247,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":248,"author":{"gitId":"rayyan35p"},"content":" String deadlineDate \u003d inputArray[1].trim();","lastModifiedDate":"2023-09-24"},{"lineNumber":249,"author":{"gitId":"rayyan35p"},"content":" return new DeadlineCommand(taskDescription + \" /by \" + deadlineDate);","lastModifiedDate":"2023-09-24"},{"lineNumber":250,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":251,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":252,"author":{"gitId":"rayyan35p"},"content":" private static Command parseEventCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":253,"author":{"gitId":"rayyan35p"},"content":" if (!input.split(\" \")[0].equals(\"event\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":254,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-24"},{"lineNumber":255,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":256,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"event\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":257,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of an event cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":259,"author":{"gitId":"rayyan35p"},"content":" if (!input.contains(\"/from\") \u0026\u0026 !input.contains(\"/to\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":260,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Event task should be in the format:\"","lastModifiedDate":"2023-09-24"},{"lineNumber":261,"author":{"gitId":"rayyan35p"},"content":" + \"event \u003cdescription\u003e /from dd/MM/yy HHmm /to dd/MM/yy HHmm\");","lastModifiedDate":"2023-09-24"},{"lineNumber":262,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":263,"author":{"gitId":"rayyan35p"},"content":" String[] taskDescriptionArray \u003d input.split(\"/from\");","lastModifiedDate":"2023-09-24"},{"lineNumber":264,"author":{"gitId":"rayyan35p"},"content":" String[] dateArray \u003d taskDescriptionArray[1].split(\"/to\");","lastModifiedDate":"2023-09-24"},{"lineNumber":265,"author":{"gitId":"rayyan35p"},"content":" String taskDescription \u003d taskDescriptionArray[0].trim();","lastModifiedDate":"2023-09-24"},{"lineNumber":266,"author":{"gitId":"rayyan35p"},"content":" if (taskDescription.length() \u003d\u003d 5) {","lastModifiedDate":"2023-09-24"},{"lineNumber":267,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description cannot be empty\");","lastModifiedDate":"2023-09-24"},{"lineNumber":268,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":269,"author":{"gitId":"rayyan35p"},"content":" String fromDate \u003d dateArray[0].trim();","lastModifiedDate":"2023-09-24"},{"lineNumber":270,"author":{"gitId":"rayyan35p"},"content":" String toDate \u003d dateArray[1].trim();","lastModifiedDate":"2023-09-24"},{"lineNumber":271,"author":{"gitId":"rayyan35p"},"content":" return new EventCommand(taskDescription + \" /from \" + fromDate + \" /to \" + toDate);","lastModifiedDate":"2023-09-24"},{"lineNumber":272,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":273,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":274,"author":{"gitId":"rayyan35p"},"content":" private static Command parseUpdateCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":275,"author":{"gitId":"rayyan35p"},"content":" if (!input.split(\" \")[0].equals(\"update\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":276,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-24"},{"lineNumber":277,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":278,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":279,"author":{"gitId":"rayyan35p"},"content":" if (input.length() \u003d\u003d 6 || inputArray.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-24"},{"lineNumber":280,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Input the task you would like to update.\");","lastModifiedDate":"2023-09-17"},{"lineNumber":281,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":282,"author":{"gitId":"rayyan35p"},"content":" // length \u003d char length of \"update \" and task number","lastModifiedDate":"2023-09-17"},{"lineNumber":283,"author":{"gitId":"rayyan35p"},"content":" int taskNumber \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2023-09-17"},{"lineNumber":284,"author":{"gitId":"rayyan35p"},"content":" int updateCommandLength \u003d 7 + input.split(\" \")[1].length();","lastModifiedDate":"2023-09-17"},{"lineNumber":285,"author":{"gitId":"rayyan35p"},"content":" String newTaskDescription \u003d input.substring(updateCommandLength + 1);","lastModifiedDate":"2023-09-17"},{"lineNumber":286,"author":{"gitId":"rayyan35p"},"content":" Command newTask \u003d parse(newTaskDescription, true);","lastModifiedDate":"2023-09-17"},{"lineNumber":287,"author":{"gitId":"rayyan35p"},"content":" return new UpdateCommand(taskNumber, newTask);","lastModifiedDate":"2023-09-17"},{"lineNumber":288,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":289,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"rayyan35p":289}},{"path":"src/main/java/bob/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.storage;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-15"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.DeadlineTask;","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.EventTask;","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.Task;","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.ToDoTask;","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" * Represents the logic for reading/writing the task data to the file.","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" /** The file for reading/writing the tasks from/to */","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" * Constructs the storage which will create a new directory called \"data\" and a new file called \"duke.txt\" in data","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" * if not already created.","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" public Storage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" File dataDirectory \u003d new File(\"./data\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" dataDirectory.mkdir();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" assert dataDirectory.exists() : \"data directory should exist\";","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" File taskFile \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" assert taskFile.exists() : \"taskFile should exist\";","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" if (taskFile.createNewFile()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Created new file to store your tasks!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Existing task file exists. \");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" this.file \u003d taskFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Unable to create file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" * Returns the file that was created during the instantiation of this Storage object.","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" * @return The file where the tasks are being read from or written to.","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" public File getFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" return this.file;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-15"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" * Reads the tasks in the datafile and writes it to the ArrayList for use by the chatbot.","lastModifiedDate":"2023-09-15"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" * @param list The ArrayList to store the tasks in.","lastModifiedDate":"2023-09-15"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" * @throws FileNotFoundException if file cannot be found.","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException if the EventTask is instantiated with wrong dates.","lastModifiedDate":"2023-09-15"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" public void readFromFile(ArrayList\u003cTask\u003e list) throws FileNotFoundException, DukeException {","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" String storedTask \u003d scanner.nextLine();","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" String[] taskArray \u003d storedTask.split(\",\");","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" Task task;","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" if (taskArray[0].startsWith(\"Todo\")) {","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" task \u003d new ToDoTask(taskArray[2]);","lastModifiedDate":"2023-09-15"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" } else if (taskArray[0].startsWith(\"Deadline\")) {","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" task \u003d new DeadlineTask(taskArray[2], taskArray[3]);","lastModifiedDate":"2023-09-15"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" } else if (taskArray[0].startsWith(\"Event\")) {","lastModifiedDate":"2023-09-23"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" task \u003d new EventTask(taskArray[2], taskArray[3], taskArray[4]);","lastModifiedDate":"2023-09-15"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Corrupt file.\");","lastModifiedDate":"2023-09-23"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" if ((taskArray[1]).equals(\"1\")) {","lastModifiedDate":"2023-09-15"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-15"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" list.add(task);","lastModifiedDate":"2023-09-15"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" scanner.close();","lastModifiedDate":"2023-09-15"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" * Changes the class field file to a new location.","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" * @param file The new file to set storage to.","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" protected void setFile(File file) {","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" this.file \u003d file;","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"rayyan35p":90}},{"path":"src/main/java/bob/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.ui;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.paint.ImagePattern;","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" private Label dialog;","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" private Circle circle;","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-09"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-09"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-09"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-09"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-09"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-09"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" this.circle.setFill(new ImagePattern(img));","lastModifiedDate":"2023-09-09"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-09"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-09"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" private void flip() {","lastModifiedDate":"2023-09-09"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-09"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-09"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" DialogBox userDialog \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-24"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" userDialog.setMinHeight(Region.USE_PREF_SIZE);","lastModifiedDate":"2023-09-24"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" return userDialog;","lastModifiedDate":"2023-09-24"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-09"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-09"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" db.flip();","lastModifiedDate":"2023-09-09"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" db.setMinHeight(Region.USE_PREF_SIZE);","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" return db;","lastModifiedDate":"2023-09-09"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":65}},{"path":"src/main/java/bob/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.ui;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.Duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" private Duke duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.jpg\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/bob.png\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-15"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" * Creates the dialogContainer with a starting message.","lastModifiedDate":"2023-09-15"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" public void initialize() {","lastModifiedDate":"2023-09-09"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-09"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-09"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" DialogBox.getDukeDialog(\"Hello, my name is Bob! What can I do for you?\", dukeImage)","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" );","lastModifiedDate":"2023-09-09"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" sendButton.setDefaultButton(true);","lastModifiedDate":"2023-09-24"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-09"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-09"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-09"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-09"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-09"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-17"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-09"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-09"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" );","lastModifiedDate":"2023-09-09"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" userInput.clear();","lastModifiedDate":"2023-09-09"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-09"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" Platform.exit();","lastModifiedDate":"2023-09-09"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":64}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" cache\u003d\"true\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" \u003cInsets right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" \u003cFont name\u003d\"Malgun Gothic\" size\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" \u003c/font\u003e\u003c/Label\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" \u003cStackPane prefHeight\u003d\"43.0\" prefWidth\u003d\"112.0\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" \u003cCircle fx:id\u003d\"circle\" radius\u003d\"50.0\" stroke\u003d\"BLACK\" strokeType\u003d\"INSIDE\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":30}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"bob.ui.MainWindow\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":18}},{"path":"src/test/java/bob/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"public class DukeTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public void dummyTest() {","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"rayyan35p":12}},{"path":"src/test/java/bob/data/task/DeadlineTaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class DeadlineTaskTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask testTask \u003d new DeadlineTask(\"test\", \"01/01/2023 1200\");","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[D][ ] test (by: 01 Jan 2023 12:00 PM)\", testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" testTask.setDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[D][X] test (by: 01 Jan 2023 12:00 PM)\", testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public void getType_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Deadline\", new DeadlineTask(\"test\", \"01/01/2023 1200\").getType());","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public void getDateTime_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"01/01/2023 1200\",","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" new DeadlineTask(\"test\", \"01/01/2023 1200\").getDateTime());","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_completedTask_stringWithCompleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask task \u003d new DeadlineTask(\"test\", \"01/01/2023 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Deadline,0,test,01/01/2023 1200\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_incompleteTask_stringWithIncomplete() {","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask task \u003d new DeadlineTask(\"test\", \"01/01/2023 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Deadline,1,test,01/01/2023 1200\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"rayyan35p":38}},{"path":"src/test/java/bob/data/task/EventTaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"public class EventTaskTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" EventTask testTask \u003d new EventTask(\"test\",","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" \"01/01/2023 1200\", \"02/01/2023 1200\");","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[E][ ] test (from: 01 Jan 2023 12:00 PM to: 02 Jan 2023 12:00 PM)\",","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" testTask.setDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[E][X] test (from: 01 Jan 2023 12:00 PM to: 02 Jan 2023 12:00 PM)\",","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" public void getType_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Event\", new EventTask(\"test\",","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" \"01/01/2023 1200\", \"02/01/2023 1200\").getType());","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" public void getDateTime_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"01/01/2023 1200,02/01/2023 1200\", new EventTask(\"test\",","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" \"01/01/2023 1200\", \"02/01/2023 1200\").getDateTime());","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" public void testInvalidToDate() {","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, () -\u003e new EventTask(\"test\",","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" \"02/01/2023 1200\", \"01/01/2023 1200\"),","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" \"Expected constructor to throw, but it didn\u0027t\");","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Your start date is either the same or after your end date!\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_completedTask_stringWithCompleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" EventTask task \u003d new EventTask(\"test\",","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" \"01/01/2023 1200\", \"02/01/2023 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Event,0,test,01/01/2023 1200,02/01/2023 1200\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_incompleteTask_stringWithIncomplete() {","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" EventTask task \u003d new EventTask(\"test\",","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" \"01/01/2023 1200\", \"02/01/2023 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Event,1,test,01/01/2023 1200,02/01/2023 1200\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"rayyan35p":83}},{"path":"src/test/java/bob/data/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" public void setTaskComplete_correctMarkTaskInput_taskSetAsComplete() {","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" assertTrue(testList.setTaskComplete(\"mark 1\").contains(\"OK, I\u0027ve marked this task as done:\\n\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" public void setTaskComplete_markTaskInputOutOfRange_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, ()","lastModifiedDate":"2023-09-24"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" -\u003e testList.setTaskComplete(\"mark 2\"),","lastModifiedDate":"2023-09-24"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" \"Expected setTaskComplete to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Task number out of range!\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" public void setTaskIncomplete_correctUnmarkTaskInput_taskSetAsIncomplete() {","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" assertTrue(testList.setTaskIncomplete(\"unmark 1\").contains(\"OK, I\u0027ve marked this task as not done yet:\\n\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" public void setTaskIncomplete_unmarkTaskInputOutOfRange_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, ()","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" -\u003e testList.setTaskComplete(\"unmark 2\"),","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" \"Expected setTaskIncomplete to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Task number out of range!\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" public void deleteTask_correctDeleteTaskInput_taskDeleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" assertTrue(testList.deleteTask(\"delete 1\").contains(\"Noted. I\u0027ve removed this task:\\n\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" public void deleteTask_deleteTaskInputOutOfRange_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, ()","lastModifiedDate":"2023-09-24"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" -\u003e testList.deleteTask(\"delete 2\"),","lastModifiedDate":"2023-09-24"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" \"Expected deleteTask to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Task number out of range!\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" public void deleteTaskAtIndex_correctIndex_taskAtIndexDeleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" testList.deleteTaskAtIndex(0);","lastModifiedDate":"2023-09-23"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" assertTrue(testList.getSize() \u003d\u003d 0);","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":" public void deleteTaskAtIndex_indexOutOfRange_taskAtIndexDeleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, ()","lastModifiedDate":"2023-09-24"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":" -\u003e testList.deleteTaskAtIndex(2),","lastModifiedDate":"2023-09-24"},{"lineNumber":115,"author":{"gitId":"rayyan35p"},"content":" \"Expected deleteTaskAtIndex to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Task number out of range!\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"rayyan35p"},"content":" public void testToString() {","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":128,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.DEADLINE, \"deadline test /by 12/12/2024 1200\");","lastModifiedDate":"2023-09-23"},{"lineNumber":129,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.EVENT,","lastModifiedDate":"2023-09-24"},{"lineNumber":130,"author":{"gitId":"rayyan35p"},"content":" \"event test /from 12/12/2024 1200 /to 13/12/2024 1200\");","lastModifiedDate":"2023-09-24"},{"lineNumber":131,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"1.[T][ ] test\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"rayyan35p"},"content":" + \"2.[D][ ] test (by: 12 Dec 2024 12:00 PM)\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"rayyan35p"},"content":" + \"3.[E][ ] test (from: 12 Dec 2024 12:00 PM to: 13 Dec 2024 12:00 PM)\",","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"rayyan35p"},"content":" testList.toString());","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":138,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"rayyan35p"},"content":" public void find_findableInput_taskFound() {","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":146,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"1.[T][ ] test\", testList.find(\"find test\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":147,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":148,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":149,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":150,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":154,"author":{"gitId":"rayyan35p"},"content":" public void find_unfindableInput_nothingFound() {","lastModifiedDate":"2023-09-22"},{"lineNumber":155,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":156,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":157,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":158,"author":{"gitId":"rayyan35p"},"content":" assertTrue(testList.find(\"find lol\").contains(\"No tasks found matching that description.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":165,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":166,"author":{"gitId":"rayyan35p"},"content":" public void swap_correctIndexes_tasksSwapped() {","lastModifiedDate":"2023-09-22"},{"lineNumber":167,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":168,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":169,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":170,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.DEADLINE, \"deadline test /by 12/12/2024 1200\");","lastModifiedDate":"2023-09-23"},{"lineNumber":171,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.EVENT,","lastModifiedDate":"2023-09-24"},{"lineNumber":172,"author":{"gitId":"rayyan35p"},"content":" \"event test /from 12/12/2024 1200 /to 13/12/2024 1200\");","lastModifiedDate":"2023-09-24"},{"lineNumber":173,"author":{"gitId":"rayyan35p"},"content":" testList.swap(0, 2);","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"1.[E][ ] test (from: 12 Dec 2024 12:00 PM to: 13 Dec 2024 12:00 PM)\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"rayyan35p"},"content":" + \"2.[D][ ] test (by: 12 Dec 2024 12:00 PM)\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":176,"author":{"gitId":"rayyan35p"},"content":" + \"3.[T][ ] test\",","lastModifiedDate":"2023-09-22"},{"lineNumber":177,"author":{"gitId":"rayyan35p"},"content":" testList.toString());","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"rayyan35p"},"content":" public void swap_indexesOutOfRange_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, () -\u003e testList.swap(-1, 2),","lastModifiedDate":"2023-09-23"},{"lineNumber":188,"author":{"gitId":"rayyan35p"},"content":" \"Expected swap to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":189,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"task number out of range!\"));","lastModifiedDate":"2023-09-23"},{"lineNumber":190,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"rayyan35p":191}},{"path":"src/test/java/bob/data/task/ToDoTaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class ToDoTaskTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" ToDoTask testTask \u003d new ToDoTask(\"test\");","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[T][ ] test\", testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" testTask.setDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[T][X] test\", testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public void getType_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Todo\", new ToDoTask(\"test\").getType());","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public void getDateTime_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"\", new ToDoTask(\"test\").getDateTime());","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_completedTask_stringWithCompleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d new ToDoTask(\"test\");","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Todo,0,test\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_incompleteTask_stringWithIncomplete() {","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d new ToDoTask(\"test\");","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Todo,1,test\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"rayyan35p":37}},{"path":"src/test/java/bob/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.parser;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-23"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private static final String INPUT_TASK_NUMBER \u003d \"Input the task number\";","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" private static final String INVALID_COMMAND \u003d \"Invalid command\";","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" private static final String INVALID_TASK_NUMBER \u003d \"The task number was wrongly input.\";","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" public void parse_invalidCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"invalidCommand test test\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"No such command.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" public void parse_badByeCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"byelol\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"No such command.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" public void parse_badListCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"listlol\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"No such command.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyMarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"mark\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INPUT_TASK_NUMBER));","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" public void parse_extraInputsMarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"mark 1 1\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_COMMAND));","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" public void parse_invalidInputMarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"mark lol\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_TASK_NUMBER));","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyUnmarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"unmark\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INPUT_TASK_NUMBER));","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" public void parse_extraInputsUnmarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"unmark 1 1\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_COMMAND));","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" public void parse_invalidInputUnmarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"unmark lol\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_TASK_NUMBER));","lastModifiedDate":"2023-09-24"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyDeleteCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"delete\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INPUT_TASK_NUMBER));","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" public void parse_extraInputsDeleteCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"delete 1 1\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_COMMAND));","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" public void parse_invalidInputDeleteCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"delete lol\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_TASK_NUMBER));","lastModifiedDate":"2023-09-24"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyFindCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"find\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Input something to search for.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyTodoCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"todo\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":122,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Description of a todo cannot be empty\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyDeadlineCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":129,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"deadline\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":130,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":131,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Description of a deadline cannot be empty\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyEventCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"event\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":138,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Description of an event cannot be empty\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyUpdateCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"update\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":146,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":147,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Input the task you would like to update.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":148,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":149,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"rayyan35p":149}},{"path":"src/test/java/bob/storage/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import java.io.File;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.DeadlineTask;","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.EventTask;","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.ToDoTask;","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" public void storage_fileExists_existingFileUsed() {","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" File taskFile \u003d new File(\"./test.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" assertFalse(taskFile.createNewFile());","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Unable to create file.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" public void readFromFile_goodFile_storedTasksAddedToList() {","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" ArrayList\u003cTask\u003e testList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" ToDoTask toDoTest \u003d new ToDoTask(\"todotest\");","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" ToDoTask toDoTest2 \u003d new ToDoTask(\"todotest2\");","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" toDoTest2.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask deadlineTest \u003d new DeadlineTask(\"deadlinetest\", \"12/12/2024 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask deadlineTest2 \u003d new DeadlineTask(\"deadlinetest2\", \"12/12/2024 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" deadlineTest2.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" EventTask eventTest \u003d new EventTask(","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" \"eventtest\",","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" \"12/12/2024 1200\",","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" \"13/12/2024 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" EventTask eventTest2 \u003d new EventTask(","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" \"eventtest2\",","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" \"12/12/2024 1200\",","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" \"13/12/2024 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" eventTest2.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" testList.add(toDoTest);","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" testList.add(toDoTest2);","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" testList.add(deadlineTest);","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" testList.add(deadlineTest2);","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" testList.add(eventTest);","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" testList.add(eventTest2);","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" FileWriter writer \u003d new FileWriter(\"test.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" writer.write(","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" \"Todo,0,todotest\\n\"","lastModifiedDate":"2023-09-23"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" + \"Todo,1,todotest2\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" + \"Deadline,0,deadlinetest,12/12/2024 1200\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" + \"Deadline,1,deadlinetest2,12/12/2024 1200\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" + \"Event,0,eventtest,12/12/2024 1200,13/12/2024 1200\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" + \"Event,1,eventtest2,12/12/2024 1200,13/12/2024 1200\\n\"","lastModifiedDate":"2023-09-23"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" );","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" writer.close();","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" File taskFile \u003d new File(\"./test.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" storage.setFile(taskFile);","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" ArrayList\u003cTask\u003e outputList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" storage.readFromFile(outputList);","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" assertEquals(testList, outputList);","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-23"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-23"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" public void readFromFile_badFile_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" FileWriter writer \u003d new FileWriter(\"test.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" writer.write(\"Tod0,0,todotest\\n\");","lastModifiedDate":"2023-09-23"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" writer.close();","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" File taskFile \u003d new File(\"./test.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" storage.setFile(taskFile);","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" ArrayList\u003cTask\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, () -\u003e storage.readFromFile(output),","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":" \"Expected readFromFile to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Corrupt file.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"rayyan35p":112}},{"path":"src/test/java/bob/storage/test.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"Todo,0,todotest","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"Todo,1,todotest2","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"Deadline,0,deadlinetest,12/12/2024 1200","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"Deadline,1,deadlinetest2,12/12/2024 1200","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"Event,0,eventtest,12/12/2024 1200,13/12/2024 1200","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"Event,1,eventtest2,12/12/2024 1200,13/12/2024 1200","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"rayyan35p":6}},{"path":"test.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"Tod0,0,todotest","lastModifiedDate":"2023-09-23"}],"authorContributionMap":{"rayyan35p":1}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"Todo,1,read book","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"Deadline,0,return book,06/06/2023 1200","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"Event,0,project meeting,06/08/2023 1400,06/08/2023 1600","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"Todo,1,join sports club","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"Todo,0,borrow book","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"rayyan35p":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"todo read book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"deadline return book /by 06/06/2023 1200","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"event project meeting /from 06/08/2023 1400 /to 06/08/2023 1600","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"todo join sports club","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"mark 4","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"unmark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":11}}] +[{"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":"-"},"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":"rayyan35p"},"content":"3. After that, locate the `src/main/java/bob/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-09-09"},{"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":{"rayyan35p":1,"-":23}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-09"},{"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":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" mainClass.set(\"bob.Launcher\")","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" enableAssertions \u003d true","lastModifiedDate":"2023-09-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":"checkstyle {","lastModifiedDate":"2023-09-09"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-09"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":22,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"# chatBob User Guide","lastModifiedDate":"2023-09-24"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"chatBob is a desktop application for managing your tasks. While it has a GUI, most of the user interactions happen using","lastModifiedDate":"2023-09-24"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"a CLI (Command Line Interface.)","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"## Quick Start","lastModifiedDate":"2023-09-24"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"1. Ensure you have Java `11` or above installed in your computer.","lastModifiedDate":"2023-09-24"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"2. Download the latest `duke.jar` from [here](https://github.com/rayyan35p/ip/releases).","lastModifiedDate":"2023-09-24"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"3. Copy the file to the folder you want to use as the home folder for your application.","lastModifiedDate":"2023-09-24"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use ","lastModifiedDate":"2023-09-24"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" `java -jar duke.jar` ","lastModifiedDate":"2023-09-24"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" command to run the application. ","lastModifiedDate":"2023-09-24"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" A GUI similar to the one below should appear in a few seconds. ","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" ![alt text](Ui.png)","lastModifiedDate":"2023-09-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"\u003e Important Notes","lastModifiedDate":"2023-09-24"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"\u003e + Words in `UPPER_CASE` are the parameters to be supplied by user ","lastModifiedDate":"2023-09-24"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" \u003e e.g. in `deadline NAME /by DATE TIME`, `NAME`, `DATE` and `TIME` are parameters which can be used as","lastModifiedDate":"2023-09-24"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" \u003e`deadline submit homework /by 30/09/2023 2359`","lastModifiedDate":"2023-09-24"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":"\u003e + Parameters must be in the order specified, or the command will not work.","lastModifiedDate":"2023-09-24"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":"\u003e + All commands must be keyed in exactly as specified with no extra parameters.","lastModifiedDate":"2023-09-24"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"### Adding a task to do: `todo`","lastModifiedDate":"2023-09-24"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"Adds a task to do to your list.","lastModifiedDate":"2023-09-24"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":"Format: `todo DESCRIPTION`","lastModifiedDate":"2023-09-24"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"+ `DESCRIPTION` is the description of the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":"### Adding a task with a deadline: `deadline`","lastModifiedDate":"2023-09-24"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":"Adds a task that has a deadline to your list.","lastModifiedDate":"2023-09-24"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":"Format: `deadline DESCRIPTION /by DATE TIME`","lastModifiedDate":"2023-09-24"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":"+ `DESCRIPTION` is the description of the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":"+ `DATE` is the date of the deadline. It is in the format `dd/MM/yyyy`.","lastModifiedDate":"2023-09-24"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":"+ `TIME` is the time of the deadline. It is in the format `HH mm`.","lastModifiedDate":"2023-09-24"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":"### Adding a task to do: `event`","lastModifiedDate":"2023-09-24"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":"Adds an event that has a start and end date time to do to your list.","lastModifiedDate":"2023-09-24"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":"Format: `event DESCRIPTION /from STARTDATE STARTTIME /to ENDDATE ENDTIME`","lastModifiedDate":"2023-09-24"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":"+ `DESCRIPTION` is the description of the task.","lastModifiedDate":"2023-09-24"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":"+ `STARTDATE` is the starting date of the event. It is in the format `dd/MM/yyyy`.","lastModifiedDate":"2023-09-24"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":"+ `STARTTIME` is the starting time of the event. It is in the format `HH mm`.","lastModifiedDate":"2023-09-24"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":"+ `ENDDATE` is the ending date of the event. It is in the format `dd/MM/yyyy`.","lastModifiedDate":"2023-09-24"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":"+ `ENDTIME` is the ending time of the event. It is in the format `dd/MM/yyyy`.","lastModifiedDate":"2023-09-24"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":"### Listing all tasks: `list`","lastModifiedDate":"2023-09-24"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":"Shows a list of all tasks stored by Bob.","lastModifiedDate":"2023-09-24"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":"Format: `list`","lastModifiedDate":"2023-09-24"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":"![alt text](list.png)","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":"### Mark a task as done: `mark`","lastModifiedDate":"2023-09-24"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":"Set a task in the list as done.","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":"Format: `mark TASKNUMBER`","lastModifiedDate":"2023-09-24"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":"+ `TASKNUMBER` is the index of the task in the list that you want to mark as done.","lastModifiedDate":"2023-09-24"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":"### Mark a task as not done: `unmark`","lastModifiedDate":"2023-09-24"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":"Set a task in the list as not done.","lastModifiedDate":"2023-09-24"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":"Format: `unmark TASKNUMBER`","lastModifiedDate":"2023-09-24"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":"+ `TASKNUMBER` is the index of the task in the list that you want to mark as not done.","lastModifiedDate":"2023-09-24"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":"### Delete a task: `delete`","lastModifiedDate":"2023-09-24"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":"Remove a task from the list.","lastModifiedDate":"2023-09-24"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":"Format: `delete TASKNUMBER`","lastModifiedDate":"2023-09-24"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":"+ `TASKNUMBER` is the index of the task in the list that you want to remove.","lastModifiedDate":"2023-09-24"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":"### Find a task: `find`","lastModifiedDate":"2023-09-24"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":"Find tasks that contain a given description.","lastModifiedDate":"2023-09-24"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":"Format: `find STRINGTOFIND`","lastModifiedDate":"2023-09-24"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":"+ `STRINGTOFIND` is a string of words that should be contained in the description of tasks that you are looking for.","lastModifiedDate":"2023-09-24"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":"Examples:","lastModifiedDate":"2023-09-24"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":"+ `find buy` returns tasks containing `buy` in their descriptions.","lastModifiedDate":"2023-09-24"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" ![alt text](find.png)","lastModifiedDate":"2023-09-24"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":"### Update a task: `update`","lastModifiedDate":"2023-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":"Update a given task in the list with new details. By using update, you do not need to delete tasks to change them.","lastModifiedDate":"2023-09-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":"Format: `update TASKNUMBER NEWTASK`","lastModifiedDate":"2023-09-24"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":"+ `TASKNUMBER` is the index of the task in the list that you want to update.","lastModifiedDate":"2023-09-24"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":"+ `NEWTASK` is a command that you would use to create a task with the newer details.","lastModifiedDate":"2023-09-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":"Examples:","lastModifiedDate":"2023-09-24"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":"+ `update 2 todo do final papers` updates the second task in the list to become a new task with the specified details.","lastModifiedDate":"2023-09-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":"### Tell you that you can fix it: `canWeFixIt()`","lastModifiedDate":"2023-09-24"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":"If you need some motivation to do your tasks, just ask Bob `canWeFixIt` because he will always return `true`.","lastModifiedDate":"2023-09-24"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":"### Exiting the program: `bye`","lastModifiedDate":"2023-09-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":"Exits the program.","lastModifiedDate":"2023-09-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":"### Saving to a local file","lastModifiedDate":"2023-09-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":"Bob instantaneously saves all your tasks in a file in data/duke.txt everytime a command is entered, so you don`t ","lastModifiedDate":"2023-09-24"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":"have to worry about losing all the tasks you just added!","lastModifiedDate":"2023-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":"### Acknowledgements","lastModifiedDate":"2023-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":"README inspired by [aslam341](https://github.com/aslam341/ip/tree/master/docs)","lastModifiedDate":"2023-09-24"}],"authorContributionMap":{"rayyan35p":103,"-":15}},{"path":"src/main/java/bob/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.Command;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import bob.storage.Storage;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" * Represents the main chatbot logic.","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" private Storage storage;","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" private TaskList list;","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" * Initialise a new Duke object with its class fields.","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public void init() {","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" this.list \u003d new TaskList(this.storage);","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" list.open();","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" public void end() {","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" this.list.close();","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" this.init();","lastModifiedDate":"2023-09-09"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" String response;","lastModifiedDate":"2023-09-09"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"canWeFixIt()\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" return \"true\";","lastModifiedDate":"2023-09-24"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" Command command \u003d Parser.parse(input, false);","lastModifiedDate":"2023-09-23"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" response \u003d command.execute(list);","lastModifiedDate":"2023-09-17"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-09"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" return e.toString();","lastModifiedDate":"2023-09-17"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" return e.toString();","lastModifiedDate":"2023-09-24"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" this.end();","lastModifiedDate":"2023-09-09"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" assert response !\u003d null : \"response should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" return response;","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"rayyan35p":48,"-":2}},{"path":"src/main/java/bob/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class Launcher {","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":12}},{"path":"src/main/java/bob/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.ui.MainWindow;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" stage.setTitle(\"chatBob\");","lastModifiedDate":"2023-09-24"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" stage.show();","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":33}},{"path":"src/main/java/bob/data/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" * Closes the GUI.","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public ByeCommand() {","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) {","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" return list.close();","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":17}},{"path":"src/main/java/bob/data/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" * Represents a command that can be executed and the behavior of the execution is dependent on the command type.","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"public abstract class Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" public Command() {}","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" public abstract String execute(TaskList list) throws DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":12}},{"path":"src/main/java/bob/data/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Add a DeadlineTask into the list.","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Creates a DeadlineCommand that creates a DeadlineTask given the specified input.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input with the details of the DeadlineTask.","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" public DeadlineCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return list.addTaskWithCommand(Parser.CommandType.DEADLINE, this.input);","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":25}},{"path":"src/main/java/bob/data/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-23"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" * Deletes a task in the list.","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * Creates a DeleteCommand that will delete a task based on the specified input.","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input indicating which task to be deleted.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" return list.deleteTask(this.input);","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"rayyan35p":24}},{"path":"src/main/java/bob/data/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Add an EventTask into the list.","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Creates an EventCommand that creates an EventTask given the specified input.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input with the details of the EventTask.","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" public EventCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return list.addTaskWithCommand(Parser.CommandType.EVENT, input);","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":25}},{"path":"src/main/java/bob/data/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" * Finds a task in the list matching a given description.","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" private String taskToFind;","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" * Creates a FindCommand that finds a certain task based on the specified input.","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * @param taskToFind The user input with the details of the task to be found.","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" public FindCommand(String taskToFind) {","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" this.taskToFind \u003d taskToFind;","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) {","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" return list.find(this.taskToFind);","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":24}},{"path":"src/main/java/bob/data/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":" * Lists out all the task in the list.","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public ListCommand() {","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) {","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" return list.toString();","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":16}},{"path":"src/main/java/bob/data/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-23"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" * Marks a task in the list as completed.","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * Creates a MarkCommand that marks a specified task as completed.","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input indicating which task to mark as completed.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public MarkCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return list.setTaskComplete(input);","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":25}},{"path":"src/main/java/bob/data/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Add a TodoTask into the list.","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Creates a TodoCommand that creates an TodoTask given the specified input.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input with the details of the TodoTask.","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" public TodoCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" super();","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return list.addTaskWithCommand(Parser.CommandType.TODO, this.input);","lastModifiedDate":"2023-09-23"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":25}},{"path":"src/main/java/bob/data/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-15"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-24"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" * Marks a task in the list as incomplete.","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private String input;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" * Creates an UnmarkCommand that marks a task in the list as incomplete.","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input indicating which task to mark as incomplete.","lastModifiedDate":"2023-09-17"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public UnmarkCommand(String input) {","lastModifiedDate":"2023-09-17"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" this.input \u003d input;","lastModifiedDate":"2023-09-17"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" return list.setTaskIncomplete(this.input);","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-15"}],"authorContributionMap":{"rayyan35p":23}},{"path":"src/main/java/bob/data/command/UpdateCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.command;","lastModifiedDate":"2023-09-17"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.TaskList;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" * Updates a task in the list with other details.","lastModifiedDate":"2023-09-24"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"public class UpdateCommand extends Command {","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private int taskNumber;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private Command newTask;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Creates a new UpdateCommand that updates a task in the TaskList with different details.","lastModifiedDate":"2023-09-24"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" * @param taskNumber The index of the task to be updated.","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" * @param newTask The corresponding command call of the updated task.","lastModifiedDate":"2023-09-24"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-24"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" public UpdateCommand(int taskNumber, Command newTask) {","lastModifiedDate":"2023-09-17"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2023-09-17"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" this.newTask \u003d newTask;","lastModifiedDate":"2023-09-17"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-17"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" public String execute(TaskList list) throws DukeException {","lastModifiedDate":"2023-09-17"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" int listSize \u003d list.getSize();","lastModifiedDate":"2023-09-23"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" if (this.taskNumber - 1 \u003e\u003d listSize) {","lastModifiedDate":"2023-09-23"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Index out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" newTask.execute(list);","lastModifiedDate":"2023-09-17"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" list.swap(this.taskNumber - 1, listSize);","lastModifiedDate":"2023-09-23"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" list.deleteTaskAtIndex(list.getSize() - 1);","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" return \"Updated task!\";","lastModifiedDate":"2023-09-17"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-17"}],"authorContributionMap":{"rayyan35p":33}},{"path":"src/main/java/bob/data/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.exception;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" * Represents an error specific to Duke.","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new exception with the specified detail message.","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" * @param message The detail message.","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" super(message);","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"rayyan35p":15}},{"path":"src/main/java/bob/data/task/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Represents a DeadlineTask that is stored in the TaskList.","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" /** Date of the deadline. */","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime deadlineDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /** Format for the DateTimeFormatter to follow. */","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" private DateTimeFormatter formatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new DeadlineTask with the specified task description and its deadline date.","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" * @param deadlineDate The datetime of the deadline of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public DeadlineTask(String description, String deadlineDate) throws DateTimeParseException {","lastModifiedDate":"2023-09-24"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" this.deadlineDate \u003d LocalDateTime.parse(deadlineDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" * Returns the type of task as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" * @return The type of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" return \"Deadline\";","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" * Returns the formatted(dd/MM/yyyy HHmm) deadline date as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" * @return Datetime of the deadline.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" return formatter.format(this.deadlineDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" * Returns the string representation of the DeadlineTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" * @return A string representation of this DeadlineTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" DateTimeFormatter stringFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" return \"[D]\" + super.toString() + \" (by: \" + stringFormatter.format(this.deadlineDate) + \")\";","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-23"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" * Checks if this DeadlineTask is the same as a specified object.","lastModifiedDate":"2023-09-23"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" * @param obj The object to be compared with.","lastModifiedDate":"2023-09-23"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" * @return true if they are both the same instance or have the same contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" * false if they have different contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-23"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" if (obj instanceof DeadlineTask) {","lastModifiedDate":"2023-09-23"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask object \u003d (DeadlineTask) obj;","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" if (this.deadlineDate.equals(object.deadlineDate) \u0026\u0026 super.equals(object)) {","lastModifiedDate":"2023-09-23"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":80}},{"path":"src/main/java/bob/data/task/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" * Represents an EventTask that is stored in the TaskList.","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" /** The start date of the EventTask. */","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime startDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" /** The end date of the EventTask. */","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" private LocalDateTime endDate;","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" /** The format for the DateTimeFormatter to follow. */","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" private DateTimeFormatter formatter;","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" * Constructs an EventTask with the specified description, start date, and end date.","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" * @param startDate The start datetime of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" * @param endDate The end datetime of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If the end datetime is before or the same as the start datetime.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" public EventTask(String description, String startDate, String endDate)","lastModifiedDate":"2023-09-26"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" throws DukeException, DateTimeParseException {","lastModifiedDate":"2023-09-26"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" this.formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endDate, formatter);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" if (end.isBefore(start)) {","lastModifiedDate":"2023-09-17"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Your start date is either the same or after your end date!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" this.startDate \u003d start;","lastModifiedDate":"2023-09-17"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" this.endDate \u003d end;","lastModifiedDate":"2023-09-17"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" * Returns the type of task as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" * @return The type of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" return \"Event\";","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" * Returns the formatted(dd/MM/yyyy HHmm) deadline date as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" * @return Datetime of the deadline.","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" return formatter.format(this.startDate) + \",\" + formatter.format(this.endDate);","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" * Returns the string representation of the EventTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" * @return A string representation of this EventTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" DateTimeFormatter stringFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy HH:mm a\");","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" return \"[E]\" + super.toString() + \" (from: \" + stringFormatter.format(this.startDate)","lastModifiedDate":"2023-09-15"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" + \" to: \" + stringFormatter.format(this.endDate) + \")\";","lastModifiedDate":"2023-09-15"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-23"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" * Checks if this EventTask is the same as a specified object.","lastModifiedDate":"2023-09-23"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" * @param obj The object to be compared with.","lastModifiedDate":"2023-09-23"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" * @return true if they are both the same instance or have the same contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" * false if they have different contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-23"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" if (obj instanceof EventTask) {","lastModifiedDate":"2023-09-23"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" EventTask object \u003d (EventTask) obj;","lastModifiedDate":"2023-09-23"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" boolean sameContents \u003d this.startDate.equals(object.startDate)","lastModifiedDate":"2023-09-23"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" \u0026\u0026 this.endDate.equals(object.endDate);","lastModifiedDate":"2023-09-23"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" if (sameContents \u0026\u0026 super.equals(object)) {","lastModifiedDate":"2023-09-23"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":97}},{"path":"src/main/java/bob/data/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" * Represents the base logic for task classes.","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" static final String INCOMPLETE \u003d \"0\";","lastModifiedDate":"2023-09-23"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" static final String COMPLETED \u003d \"1\";","lastModifiedDate":"2023-09-23"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" /** The description of the task. */","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" private String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" /** The completion of the task. */","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new Task based on the specified description.","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" * Set isDone to true.","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" public void setDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" * Set isDone to false.","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" public void setNotDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" * Returns the type of task as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" * @return The type of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" public abstract String getType();","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" * Returns the formatted(dd/MM/yyyy HHmm) deadline date as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" * @return Datetime of the deadline.","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" public abstract String getDateTime();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" * Returns the string representation of the Task. Box will be \"[ ]\" if isDone is false and \"[X]\" if true.","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" * @return A string representation of this Task.","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" return \"[X] \" + description;","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" if (obj instanceof Task) {","lastModifiedDate":"2023-09-23"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" Task object \u003d (Task) obj;","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" boolean sameDescription \u003d this.description.equals(object.description);","lastModifiedDate":"2023-09-23"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" boolean sameCompletion \u003d this.isDone \u003d\u003d object.isDone;","lastModifiedDate":"2023-09-23"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" if (sameDescription \u0026\u0026 sameCompletion) {","lastModifiedDate":"2023-09-23"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" if (this.description \u003d\u003d null || object.description \u003d\u003d null) {","lastModifiedDate":"2023-09-23"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" * Returns a string representation of a task that is in the format needed for storing and reading from a file.","lastModifiedDate":"2023-09-03"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" * @return A string representation of a task in a file storing/reading format.","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" String type \u003d this.getType();","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" String completed \u003d INCOMPLETE;","lastModifiedDate":"2023-09-17"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" completed \u003d COMPLETED;","lastModifiedDate":"2023-09-17"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" String title \u003d this.description;","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" String dateTime \u003d this.getDateTime();","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":" if (this.getDateTime().length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" output.append(type + \",\" + completed + \",\" + title + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-09-15"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" output.append(type + \",\" + completed + \",\" + title + \",\" + dateTime + \"\\n\");","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" return output.toString();","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":109}},{"path":"src/main/java/bob/data/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-09-24"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import bob.storage.Storage;","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Represents a TaskList that contains the tasks and writes to a specified file.","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"public class TaskList {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" /** The ArrayList for storing all the tasks. */","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" /** The storage object for writing/reading the task to/from. */","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" private Storage storage;","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new TaskList.","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" public TaskList() {","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-17"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new TaskList based on the specified file.","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" * @param storage The storage class which handles the storage operations.","lastModifiedDate":"2023-09-15"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" public TaskList(Storage storage) {","lastModifiedDate":"2023-09-15"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" assert storage !\u003d null : \"storage should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-09-15"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" * Reads the contents of the file and stores it into the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" public void open() {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-17"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" assert tasks !\u003d null : \"tasks should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" this.storage.readFromFile(this.tasks);","lastModifiedDate":"2023-09-15"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"An error occurred when trying to find the file.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" * Adds a specified task to the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" * @param task The task to be added to the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" public void addTask(Task task, boolean isMuted) {","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" assert task !\u003d null : \"task should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" if (!isMuted) {","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Now you have \" + this.tasks.size() + \" task(s) in the list.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" * Adds a task to the ArrayList based on the specified command and input.","lastModifiedDate":"2023-09-03"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" * @param command The command that determines which subclass of Task will be instantiated.","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" * @param input The input needed for the instantiation of the Task.","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" * @return A string describing the task that was added.","lastModifiedDate":"2023-09-17"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If the EventTask is instantiated with invalid dates.","lastModifiedDate":"2023-09-03"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" public String addTaskWithCommand(Parser.CommandType command, String input) throws DukeException, DateTimeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" assert command !\u003d null : \"command should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" Task taskToAdd;","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" String[] taskDescriptionArray;","lastModifiedDate":"2023-09-15"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" switch (command) {","lastModifiedDate":"2023-09-01"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" case TODO:","lastModifiedDate":"2023-09-01"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" String toDoTaskDescription \u003d input.substring(5);","lastModifiedDate":"2023-09-23"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" taskToAdd \u003d new ToDoTask(toDoTaskDescription);","lastModifiedDate":"2023-09-23"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-01"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" String deadlineTaskDescription \u003d input.substring(9);","lastModifiedDate":"2023-09-23"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" taskDescriptionArray \u003d deadlineTaskDescription.split(\" /by \");","lastModifiedDate":"2023-09-23"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" taskToAdd \u003d new DeadlineTask(taskDescriptionArray[0], taskDescriptionArray[1]);","lastModifiedDate":"2023-09-15"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" case EVENT:","lastModifiedDate":"2023-09-01"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" String eventTaskDescription \u003d input.substring(6);","lastModifiedDate":"2023-09-23"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" taskDescriptionArray \u003d eventTaskDescription.split(\" /from \");","lastModifiedDate":"2023-09-23"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" String description \u003d taskDescriptionArray[0];","lastModifiedDate":"2023-09-15"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" String[] dateArray \u003d taskDescriptionArray[1].split(\" /to \");","lastModifiedDate":"2023-09-15"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" taskToAdd \u003d new EventTask(description, dateArray[0], dateArray[1]);","lastModifiedDate":"2023-09-15"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-01"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":" default:","lastModifiedDate":"2023-09-03"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"No such command found.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" this.tasks.add(taskToAdd);","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" return \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2023-09-17"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" + taskToAdd + \"\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" + \"Now you have \" + this.tasks.size() + \" task(s) in the list.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":" * Set the task at the index, based on the specified input string, of the ArrayList to be completed.","lastModifiedDate":"2023-09-03"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":" * @param input The input string containing the index of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":" * @return A string representing the task that was set as completed.","lastModifiedDate":"2023-09-23"},{"lineNumber":115,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If the task number is out of range of the list.","lastModifiedDate":"2023-09-23"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":117,"author":{"gitId":"rayyan35p"},"content":" public String setTaskComplete(String input) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":119,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":120,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2023-09-23"},{"lineNumber":121,"author":{"gitId":"rayyan35p"},"content":" if (taskNo \u003c 1 || taskNo \u003e this.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":122,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Task number out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":123,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":124,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.tasks.get(taskNo - 1);","lastModifiedDate":"2023-09-23"},{"lineNumber":125,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":126,"author":{"gitId":"rayyan35p"},"content":" return \"OK, I\u0027ve marked this task as done:\\n\" + task;","lastModifiedDate":"2023-09-17"},{"lineNumber":127,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":128,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":129,"author":{"gitId":"rayyan35p"},"content":" * Set the task at the index, based on the specified input string, of the ArrayList to be incomplete.","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"rayyan35p"},"content":" * @param input The input string containing the index of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":132,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":133,"author":{"gitId":"rayyan35p"},"content":" public String setTaskIncomplete(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":134,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":135,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":136,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]) - 1;","lastModifiedDate":"2023-09-01"},{"lineNumber":137,"author":{"gitId":"rayyan35p"},"content":" if (taskNo \u003c 1 || taskNo \u003e this.getSize()) {","lastModifiedDate":"2023-09-24"},{"lineNumber":138,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Task number out of range!\");","lastModifiedDate":"2023-09-24"},{"lineNumber":139,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":140,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.tasks.get(taskNo);","lastModifiedDate":"2023-09-03"},{"lineNumber":141,"author":{"gitId":"rayyan35p"},"content":" task.setNotDone();","lastModifiedDate":"2023-09-01"},{"lineNumber":142,"author":{"gitId":"rayyan35p"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\" + task;","lastModifiedDate":"2023-09-17"},{"lineNumber":143,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"rayyan35p"},"content":" * Removes the task at an index, based on the specified input, of the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":146,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":147,"author":{"gitId":"rayyan35p"},"content":" * @param input The input string containing the index of the task to be removed.","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":149,"author":{"gitId":"rayyan35p"},"content":" public String deleteTask(String input) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":150,"author":{"gitId":"rayyan35p"},"content":" int originalSize \u003d tasks.size();","lastModifiedDate":"2023-09-24"},{"lineNumber":151,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":152,"author":{"gitId":"rayyan35p"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2023-09-01"},{"lineNumber":153,"author":{"gitId":"rayyan35p"},"content":" int taskNo \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2023-09-23"},{"lineNumber":154,"author":{"gitId":"rayyan35p"},"content":" if (taskNo \u003c 1 || taskNo \u003e this.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":155,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Task number out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":156,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":157,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d this.tasks.get(taskNo - 1);","lastModifiedDate":"2023-09-23"},{"lineNumber":158,"author":{"gitId":"rayyan35p"},"content":" this.tasks.remove(taskNo - 1);","lastModifiedDate":"2023-09-23"},{"lineNumber":159,"author":{"gitId":"rayyan35p"},"content":" assert tasks.size() \u003d\u003d originalSize - 1 : \"task should not exist in the list anymore\";","lastModifiedDate":"2023-09-24"},{"lineNumber":160,"author":{"gitId":"rayyan35p"},"content":" return \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2023-09-17"},{"lineNumber":161,"author":{"gitId":"rayyan35p"},"content":" + task + \"\\n\"","lastModifiedDate":"2023-09-15"},{"lineNumber":162,"author":{"gitId":"rayyan35p"},"content":" + \"Now you have \" + this.tasks.size() + \" task(s) in the list.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":163,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":164,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":165,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-23"},{"lineNumber":166,"author":{"gitId":"rayyan35p"},"content":" * Delete a task in the list given a specified index","lastModifiedDate":"2023-09-23"},{"lineNumber":167,"author":{"gitId":"rayyan35p"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2023-09-23"},{"lineNumber":168,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If the task number is out of the range of the list.","lastModifiedDate":"2023-09-23"},{"lineNumber":169,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-23"},{"lineNumber":170,"author":{"gitId":"rayyan35p"},"content":" public void deleteTaskAtIndex(int index) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":171,"author":{"gitId":"rayyan35p"},"content":" if (index \u003c 0 || index \u003e this.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":172,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Task number out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":173,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":174,"author":{"gitId":"rayyan35p"},"content":" tasks.remove(index);","lastModifiedDate":"2023-09-17"},{"lineNumber":175,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":176,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":177,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":178,"author":{"gitId":"rayyan35p"},"content":" * Prints all the tasks contained in the ArrayList in an indexed manner.","lastModifiedDate":"2023-09-03"},{"lineNumber":179,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":180,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-03"},{"lineNumber":181,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":182,"author":{"gitId":"rayyan35p"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-09-03"},{"lineNumber":183,"author":{"gitId":"rayyan35p"},"content":" return \"No tasks in your list, add some!\";","lastModifiedDate":"2023-09-24"},{"lineNumber":184,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":185,"author":{"gitId":"rayyan35p"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-09-03"},{"lineNumber":186,"author":{"gitId":"rayyan35p"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":187,"author":{"gitId":"rayyan35p"},"content":" String indexedTask \u003d i + 1 + \".\" + tasks.get(i) + \"\\n\";","lastModifiedDate":"2023-09-17"},{"lineNumber":188,"author":{"gitId":"rayyan35p"},"content":" stringBuilder.append(indexedTask);","lastModifiedDate":"2023-09-17"},{"lineNumber":189,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":190,"author":{"gitId":"rayyan35p"},"content":" stringBuilder.deleteCharAt(stringBuilder.length() - 1);","lastModifiedDate":"2023-09-03"},{"lineNumber":191,"author":{"gitId":"rayyan35p"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-09-03"},{"lineNumber":192,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":193,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":194,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":195,"author":{"gitId":"rayyan35p"},"content":" * Saves all tasks in the list to the file.","lastModifiedDate":"2023-09-17"},{"lineNumber":196,"author":{"gitId":"rayyan35p"},"content":" * @return A string with the farewell message.","lastModifiedDate":"2023-09-17"},{"lineNumber":197,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":198,"author":{"gitId":"rayyan35p"},"content":" public String close() {","lastModifiedDate":"2023-09-17"},{"lineNumber":199,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-30"},{"lineNumber":200,"author":{"gitId":"rayyan35p"},"content":" assert this.storage.getFile().exists() : \"file should exist so that it can be written to\";","lastModifiedDate":"2023-09-17"},{"lineNumber":201,"author":{"gitId":"rayyan35p"},"content":" FileWriter writer \u003d new FileWriter(this.storage.getFile());","lastModifiedDate":"2023-09-15"},{"lineNumber":202,"author":{"gitId":"rayyan35p"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-09-03"},{"lineNumber":203,"author":{"gitId":"rayyan35p"},"content":" writer.write(task.toFileString());","lastModifiedDate":"2023-08-30"},{"lineNumber":204,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":205,"author":{"gitId":"rayyan35p"},"content":" writer.close();","lastModifiedDate":"2023-08-30"},{"lineNumber":206,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-30"},{"lineNumber":207,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"An error occurred while saving your tasks.\");","lastModifiedDate":"2023-08-30"},{"lineNumber":208,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-30"},{"lineNumber":209,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":210,"author":{"gitId":"rayyan35p"},"content":" return \"Bye!\";","lastModifiedDate":"2023-09-17"},{"lineNumber":211,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":212,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":213,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":214,"author":{"gitId":"rayyan35p"},"content":" * Returns the size of the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":215,"author":{"gitId":"rayyan35p"},"content":" * @return An integer representing the size of the ArrayList.","lastModifiedDate":"2023-09-03"},{"lineNumber":216,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":217,"author":{"gitId":"rayyan35p"},"content":" public int getSize() {","lastModifiedDate":"2023-09-03"},{"lineNumber":218,"author":{"gitId":"rayyan35p"},"content":" return this.tasks.size();","lastModifiedDate":"2023-09-03"},{"lineNumber":219,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":220,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":221,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":222,"author":{"gitId":"rayyan35p"},"content":" * Returns the String representation of all the tasks that are similar to the specified input in an indexed manner.","lastModifiedDate":"2023-09-03"},{"lineNumber":223,"author":{"gitId":"rayyan35p"},"content":" * @param input The String to be compared with other tasks.","lastModifiedDate":"2023-09-03"},{"lineNumber":224,"author":{"gitId":"rayyan35p"},"content":" * @return The String representation of matching tasks.","lastModifiedDate":"2023-09-03"},{"lineNumber":225,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":226,"author":{"gitId":"rayyan35p"},"content":" public String find(String input) {","lastModifiedDate":"2023-09-03"},{"lineNumber":227,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":228,"author":{"gitId":"rayyan35p"},"content":" String toFind \u003d input.substring(5);","lastModifiedDate":"2023-09-03"},{"lineNumber":229,"author":{"gitId":"rayyan35p"},"content":" TaskList tasksFound \u003d new TaskList();","lastModifiedDate":"2023-09-03"},{"lineNumber":230,"author":{"gitId":"rayyan35p"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2023-09-03"},{"lineNumber":231,"author":{"gitId":"rayyan35p"},"content":" if (task.toString().contains(toFind)) {","lastModifiedDate":"2023-09-03"},{"lineNumber":232,"author":{"gitId":"rayyan35p"},"content":" tasksFound.addTask(task, true);","lastModifiedDate":"2023-09-03"},{"lineNumber":233,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":234,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":235,"author":{"gitId":"rayyan35p"},"content":" if (tasksFound.getSize() \u003d\u003d 0) {","lastModifiedDate":"2023-09-03"},{"lineNumber":236,"author":{"gitId":"rayyan35p"},"content":" return \"No tasks found matching that description.\";","lastModifiedDate":"2023-09-03"},{"lineNumber":237,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":238,"author":{"gitId":"rayyan35p"},"content":" return tasksFound.toString();","lastModifiedDate":"2023-09-03"},{"lineNumber":239,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":240,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":241,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":242,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":243,"author":{"gitId":"rayyan35p"},"content":" * Swaps two tasks in the taskList.","lastModifiedDate":"2023-09-22"},{"lineNumber":244,"author":{"gitId":"rayyan35p"},"content":" * @param firstTaskIndex Index of the first task to be swapped.","lastModifiedDate":"2023-09-22"},{"lineNumber":245,"author":{"gitId":"rayyan35p"},"content":" * @param secondTaskIndex Index of the second task to be swapped.","lastModifiedDate":"2023-09-22"},{"lineNumber":246,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":247,"author":{"gitId":"rayyan35p"},"content":" public void swap(int firstTaskIndex, int secondTaskIndex) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":248,"author":{"gitId":"rayyan35p"},"content":" if (firstTaskIndex \u003c 0 || firstTaskIndex \u003e this.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":249,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"First task number out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":250,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":251,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":252,"author":{"gitId":"rayyan35p"},"content":" if (secondTaskIndex \u003c 0 || secondTaskIndex \u003e this.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":253,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Second task number out of range!\");","lastModifiedDate":"2023-09-23"},{"lineNumber":254,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":255,"author":{"gitId":"rayyan35p"},"content":" Task temp \u003d tasks.get(firstTaskIndex);","lastModifiedDate":"2023-09-17"},{"lineNumber":256,"author":{"gitId":"rayyan35p"},"content":" tasks.set(firstTaskIndex, tasks.get(secondTaskIndex));","lastModifiedDate":"2023-09-17"},{"lineNumber":257,"author":{"gitId":"rayyan35p"},"content":" tasks.set(secondTaskIndex, temp);","lastModifiedDate":"2023-09-17"},{"lineNumber":258,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":259,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":260,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-23"},{"lineNumber":261,"author":{"gitId":"rayyan35p"},"content":" * Checks if this DeadlineTask is the same as a specified object.","lastModifiedDate":"2023-09-23"},{"lineNumber":262,"author":{"gitId":"rayyan35p"},"content":" * @param obj The object to be compared with.","lastModifiedDate":"2023-09-23"},{"lineNumber":263,"author":{"gitId":"rayyan35p"},"content":" * @return true if they are both the same instance or have the same contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":264,"author":{"gitId":"rayyan35p"},"content":" * false if they have different contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":265,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-23"},{"lineNumber":266,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":267,"author":{"gitId":"rayyan35p"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":268,"author":{"gitId":"rayyan35p"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":269,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":270,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":271,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":272,"author":{"gitId":"rayyan35p"},"content":" if (obj instanceof TaskList) {","lastModifiedDate":"2023-09-23"},{"lineNumber":273,"author":{"gitId":"rayyan35p"},"content":" TaskList object \u003d (TaskList) obj;","lastModifiedDate":"2023-09-23"},{"lineNumber":274,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":275,"author":{"gitId":"rayyan35p"},"content":" if (this.getSize() !\u003d object.getSize()) {","lastModifiedDate":"2023-09-23"},{"lineNumber":276,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":277,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":278,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":279,"author":{"gitId":"rayyan35p"},"content":" boolean sameContents \u003d true;","lastModifiedDate":"2023-09-23"},{"lineNumber":280,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":281,"author":{"gitId":"rayyan35p"},"content":" for (int i \u003d 0; i \u003c this.getSize(); i++) {","lastModifiedDate":"2023-09-23"},{"lineNumber":282,"author":{"gitId":"rayyan35p"},"content":" if (this.tasks.get(i).equals(object.tasks.get(i))) {","lastModifiedDate":"2023-09-23"},{"lineNumber":283,"author":{"gitId":"rayyan35p"},"content":" sameContents \u003d false;","lastModifiedDate":"2023-09-23"},{"lineNumber":284,"author":{"gitId":"rayyan35p"},"content":" break;","lastModifiedDate":"2023-09-23"},{"lineNumber":285,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":286,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":287,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":288,"author":{"gitId":"rayyan35p"},"content":" return sameContents;","lastModifiedDate":"2023-09-23"},{"lineNumber":289,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":290,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":291,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":292,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":292}},{"path":"src/main/java/bob/data/task/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":" * Represent a ToDoTask that is contained in the TaskList.","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" * Constructs a new ToDoTask based on the specified description.","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" public ToDoTask(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" * Returns the type of task as a String.","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" * @return The type of task.","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" public String getType() {","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" return \"Todo\";","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" * Returns a blank String.","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" * @return A blank String.","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" public String getDateTime() {","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" return \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" * Returns the string representation of the ToDoTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" * @return A string representation of this ToDoTask.","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-23"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" * Checks if this ToDoTask is the same as a specified object.","lastModifiedDate":"2023-09-23"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" * @param obj The object to be compared with.","lastModifiedDate":"2023-09-23"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" * @return true if they are both the same instance or have the same contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" * false if they have different contents.","lastModifiedDate":"2023-09-23"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-23"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" @Override","lastModifiedDate":"2023-09-23"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" if (this \u003d\u003d obj) {","lastModifiedDate":"2023-09-23"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" if (obj instanceof ToDoTask) {","lastModifiedDate":"2023-09-23"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" ToDoTask object \u003d (ToDoTask) obj;","lastModifiedDate":"2023-09-23"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" if (super.equals(object)) {","lastModifiedDate":"2023-09-23"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" return true;","lastModifiedDate":"2023-09-23"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" return false;","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":67}},{"path":"src/main/java/bob/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.parser;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.ByeCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.Command;","lastModifiedDate":"2023-09-17"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.DeadlineCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.DeleteCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.EventCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.FindCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.ListCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.MarkCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.TodoCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.UnmarkCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"import bob.data.command.UpdateCommand;","lastModifiedDate":"2023-09-17"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" * Represents a Parser class that parses the input commands given by the user.","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"public class Parser {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" private static final String INPUT_TASK_NUMBER \u003d \"Input the task number\";","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" private static final String INVALID_COMMAND \u003d \"Invalid command\";","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" private static final String INVALID_TASK_NUMBER \u003d \"The task number was wrongly input.\";","lastModifiedDate":"2023-09-24"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" * Commands to be run based on the user\u0027s input.","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" public static enum CommandType {","lastModifiedDate":"2023-09-23"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" BYE,","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" LIST,","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" MARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" UNMARK,","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" DELETE,","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" FIND,","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" TODO,","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" DEADLINE,","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" EVENT,","lastModifiedDate":"2023-09-17"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" UPDATE","lastModifiedDate":"2023-09-17"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" * Returns a command to be executed given a specified input provided by the user.","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" * @param input The input of the user.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" * @return A command to be executed which is based on the user input.","lastModifiedDate":"2023-09-17"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If the input is not a valid command.","lastModifiedDate":"2023-09-24"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" public static Command parse(String input, boolean isUpdate) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" CommandType commandType;","lastModifiedDate":"2023-09-17"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" if (isUpdate) {","lastModifiedDate":"2023-09-17"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" commandType \u003d Parser.getTaskCommandType(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-09-17"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" commandType \u003d Parser.getCommandType(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" return validateCommand(commandType, input);","lastModifiedDate":"2023-09-17"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" private static CommandType getCommandType(String input) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" return CommandType.BYE;","lastModifiedDate":"2023-09-17"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" return CommandType.LIST;","lastModifiedDate":"2023-09-17"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"mark\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" return CommandType.MARK;","lastModifiedDate":"2023-09-17"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" return CommandType.UNMARK;","lastModifiedDate":"2023-09-17"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"delete\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" return CommandType.DELETE;","lastModifiedDate":"2023-09-17"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"find\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" return CommandType.FIND;","lastModifiedDate":"2023-09-17"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" return CommandType.TODO;","lastModifiedDate":"2023-09-17"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" return CommandType.DEADLINE;","lastModifiedDate":"2023-09-17"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" return CommandType.EVENT;","lastModifiedDate":"2023-09-17"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"update\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" return CommandType.UPDATE;","lastModifiedDate":"2023-09-17"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"No such command.\");","lastModifiedDate":"2023-09-17"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" private static CommandType getTaskCommandType(String input) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" return CommandType.TODO;","lastModifiedDate":"2023-09-17"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" return CommandType.DEADLINE;","lastModifiedDate":"2023-09-17"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-09-17"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" return CommandType.EVENT;","lastModifiedDate":"2023-09-17"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Not a valid task type.\");","lastModifiedDate":"2023-09-17"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-17"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-17"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" * Validates what the user types by ensuring the proper format for each command type is adhered to.","lastModifiedDate":"2023-09-17"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" * @param commandType The type of command to check the format against.","lastModifiedDate":"2023-09-17"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" * @param input The user input.","lastModifiedDate":"2023-09-17"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" * @return A Command that when executed, will act as specified by the user.","lastModifiedDate":"2023-09-17"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException If an unknown command is input.","lastModifiedDate":"2023-09-26"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-17"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":" private static Command validateCommand(CommandType commandType, String input) throws DukeException {","lastModifiedDate":"2023-09-23"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":" assert input !\u003d null : \"input should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":" assert commandType !\u003d null : \"command should not be null\";","lastModifiedDate":"2023-09-17"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":" switch(commandType) {","lastModifiedDate":"2023-09-17"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":" case BYE:","lastModifiedDate":"2023-09-01"},{"lineNumber":115,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseByeCommand();","lastModifiedDate":"2023-09-24"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":" case LIST:","lastModifiedDate":"2023-09-01"},{"lineNumber":117,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseListCommand();","lastModifiedDate":"2023-09-24"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":" case MARK:","lastModifiedDate":"2023-09-01"},{"lineNumber":119,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseMarkCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":120,"author":{"gitId":"rayyan35p"},"content":" case UNMARK:","lastModifiedDate":"2023-09-24"},{"lineNumber":121,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseUnmarkCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":122,"author":{"gitId":"rayyan35p"},"content":" case DELETE:","lastModifiedDate":"2023-09-24"},{"lineNumber":123,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseDeleteCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":124,"author":{"gitId":"rayyan35p"},"content":" case FIND:","lastModifiedDate":"2023-09-24"},{"lineNumber":125,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseFindCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":126,"author":{"gitId":"rayyan35p"},"content":" case TODO:","lastModifiedDate":"2023-09-24"},{"lineNumber":127,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseTodoCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":128,"author":{"gitId":"rayyan35p"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-24"},{"lineNumber":129,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseDeadlineCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":130,"author":{"gitId":"rayyan35p"},"content":" case EVENT:","lastModifiedDate":"2023-09-24"},{"lineNumber":131,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseEventCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":132,"author":{"gitId":"rayyan35p"},"content":" case UPDATE:","lastModifiedDate":"2023-09-24"},{"lineNumber":133,"author":{"gitId":"rayyan35p"},"content":" return Parser.parseUpdateCommand(input);","lastModifiedDate":"2023-09-24"},{"lineNumber":134,"author":{"gitId":"rayyan35p"},"content":" default:","lastModifiedDate":"2023-09-24"},{"lineNumber":135,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"No such command.\");","lastModifiedDate":"2023-09-24"},{"lineNumber":136,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":137,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":138,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":139,"author":{"gitId":"rayyan35p"},"content":" private static Command parseByeCommand() {","lastModifiedDate":"2023-09-24"},{"lineNumber":140,"author":{"gitId":"rayyan35p"},"content":" return new ByeCommand();","lastModifiedDate":"2023-09-24"},{"lineNumber":141,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":142,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":143,"author":{"gitId":"rayyan35p"},"content":" private static Command parseListCommand() {","lastModifiedDate":"2023-09-24"},{"lineNumber":144,"author":{"gitId":"rayyan35p"},"content":" return new ListCommand();","lastModifiedDate":"2023-09-24"},{"lineNumber":145,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":146,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":147,"author":{"gitId":"rayyan35p"},"content":" private static Command parseMarkCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":148,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":149,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":150,"author":{"gitId":"rayyan35p"},"content":" if (!inputArray[0].equals(\"mark\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":151,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-24"},{"lineNumber":152,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":153,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":154,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INPUT_TASK_NUMBER);","lastModifiedDate":"2023-09-15"},{"lineNumber":155,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":156,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003e 2) {","lastModifiedDate":"2023-09-17"},{"lineNumber":157,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-15"},{"lineNumber":158,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":159,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-24"},{"lineNumber":160,"author":{"gitId":"rayyan35p"},"content":" int taskNumber \u003d Integer.parseInt(inputArray[1].trim());","lastModifiedDate":"2023-09-24"},{"lineNumber":161,"author":{"gitId":"rayyan35p"},"content":" return new MarkCommand(inputArray[0] + \" \" + taskNumber);","lastModifiedDate":"2023-09-24"},{"lineNumber":162,"author":{"gitId":"rayyan35p"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":163,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_TASK_NUMBER);","lastModifiedDate":"2023-09-24"},{"lineNumber":164,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":165,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":166,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":167,"author":{"gitId":"rayyan35p"},"content":" private static Command parseUnmarkCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":168,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":169,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":170,"author":{"gitId":"rayyan35p"},"content":" if (!inputArray[0].equals(\"unmark\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":171,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-23"},{"lineNumber":172,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":173,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":174,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INPUT_TASK_NUMBER);","lastModifiedDate":"2023-09-15"},{"lineNumber":175,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":176,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003e 2) {","lastModifiedDate":"2023-09-17"},{"lineNumber":177,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-15"},{"lineNumber":178,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":179,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-24"},{"lineNumber":180,"author":{"gitId":"rayyan35p"},"content":" int taskNumber \u003d Integer.parseInt(inputArray[1].trim());","lastModifiedDate":"2023-09-24"},{"lineNumber":181,"author":{"gitId":"rayyan35p"},"content":" return new UnmarkCommand(inputArray[0] + \" \" + taskNumber);","lastModifiedDate":"2023-09-24"},{"lineNumber":182,"author":{"gitId":"rayyan35p"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":183,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_TASK_NUMBER);","lastModifiedDate":"2023-09-24"},{"lineNumber":184,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":185,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":186,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":187,"author":{"gitId":"rayyan35p"},"content":" private static Command parseDeleteCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":188,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":189,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":190,"author":{"gitId":"rayyan35p"},"content":" if (!inputArray[0].equals(\"delete\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":191,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-23"},{"lineNumber":192,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":193,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":194,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INPUT_TASK_NUMBER);","lastModifiedDate":"2023-09-15"},{"lineNumber":195,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":196,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003e 2) {","lastModifiedDate":"2023-09-17"},{"lineNumber":197,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-15"},{"lineNumber":198,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":199,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-24"},{"lineNumber":200,"author":{"gitId":"rayyan35p"},"content":" int taskNumber \u003d Integer.parseInt(inputArray[1].trim());","lastModifiedDate":"2023-09-24"},{"lineNumber":201,"author":{"gitId":"rayyan35p"},"content":" return new DeleteCommand(inputArray[0] + \" \" + taskNumber);","lastModifiedDate":"2023-09-24"},{"lineNumber":202,"author":{"gitId":"rayyan35p"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-24"},{"lineNumber":203,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_TASK_NUMBER);","lastModifiedDate":"2023-09-24"},{"lineNumber":204,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":205,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":206,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":207,"author":{"gitId":"rayyan35p"},"content":" private static Command parseFindCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":208,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":209,"author":{"gitId":"rayyan35p"},"content":" if (!inputArray[0].equals(\"find\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":210,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-23"},{"lineNumber":211,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":212,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":213,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":214,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Input something to search for.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":215,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":216,"author":{"gitId":"rayyan35p"},"content":" return new FindCommand(input);","lastModifiedDate":"2023-09-17"},{"lineNumber":217,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":218,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":219,"author":{"gitId":"rayyan35p"},"content":" private static Command parseTodoCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":220,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":221,"author":{"gitId":"rayyan35p"},"content":" if (!inputArray[0].equals(\"todo\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":222,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-24"},{"lineNumber":223,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":224,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":225,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":226,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of a todo cannot be empty.\");","lastModifiedDate":"2023-09-24"},{"lineNumber":227,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":228,"author":{"gitId":"rayyan35p"},"content":" return new TodoCommand(input);","lastModifiedDate":"2023-09-17"},{"lineNumber":229,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":230,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":231,"author":{"gitId":"rayyan35p"},"content":" private static Command parseDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":232,"author":{"gitId":"rayyan35p"},"content":" if (!input.split(\" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":233,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-24"},{"lineNumber":234,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":235,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\"/by\");","lastModifiedDate":"2023-09-24"},{"lineNumber":236,"author":{"gitId":"rayyan35p"},"content":" int commandWordCount \u003d inputArray.length;","lastModifiedDate":"2023-09-24"},{"lineNumber":237,"author":{"gitId":"rayyan35p"},"content":" if (commandWordCount \u003c 2) {","lastModifiedDate":"2023-09-24"},{"lineNumber":238,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of a deadline cannot be empty.\");","lastModifiedDate":"2023-09-24"},{"lineNumber":239,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":240,"author":{"gitId":"rayyan35p"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":241,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Deadline task should be in the format: deadline \u003cdescription\u003e /by dd/MM/yy HHmm\");","lastModifiedDate":"2023-09-24"},{"lineNumber":242,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":243,"author":{"gitId":"rayyan35p"},"content":" String taskDescription \u003d inputArray[0].trim();","lastModifiedDate":"2023-09-24"},{"lineNumber":244,"author":{"gitId":"rayyan35p"},"content":" if (taskDescription.length() \u003d\u003d 8) {","lastModifiedDate":"2023-09-24"},{"lineNumber":245,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description cannot be empty\");","lastModifiedDate":"2023-09-24"},{"lineNumber":246,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":247,"author":{"gitId":"rayyan35p"},"content":" String deadlineDate \u003d inputArray[1].trim();","lastModifiedDate":"2023-09-24"},{"lineNumber":248,"author":{"gitId":"rayyan35p"},"content":" return new DeadlineCommand(taskDescription + \" /by \" + deadlineDate);","lastModifiedDate":"2023-09-24"},{"lineNumber":249,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":250,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":251,"author":{"gitId":"rayyan35p"},"content":" private static Command parseEventCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":252,"author":{"gitId":"rayyan35p"},"content":" if (!input.split(\" \")[0].equals(\"event\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":253,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-24"},{"lineNumber":254,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":255,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"event\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":256,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description of an event cannot be empty\");","lastModifiedDate":"2023-09-01"},{"lineNumber":257,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":258,"author":{"gitId":"rayyan35p"},"content":" if (!input.contains(\"/from\") \u0026\u0026 !input.contains(\"/to\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":259,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Event task should be in the format:\"","lastModifiedDate":"2023-09-24"},{"lineNumber":260,"author":{"gitId":"rayyan35p"},"content":" + \"event \u003cdescription\u003e /from dd/MM/yy HHmm /to dd/MM/yy HHmm\");","lastModifiedDate":"2023-09-24"},{"lineNumber":261,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":262,"author":{"gitId":"rayyan35p"},"content":" String[] taskDescriptionArray \u003d input.split(\"/from\");","lastModifiedDate":"2023-09-24"},{"lineNumber":263,"author":{"gitId":"rayyan35p"},"content":" String[] dateArray \u003d taskDescriptionArray[1].split(\"/to\");","lastModifiedDate":"2023-09-24"},{"lineNumber":264,"author":{"gitId":"rayyan35p"},"content":" String taskDescription \u003d taskDescriptionArray[0].trim();","lastModifiedDate":"2023-09-24"},{"lineNumber":265,"author":{"gitId":"rayyan35p"},"content":" if (taskDescription.length() \u003d\u003d 5) {","lastModifiedDate":"2023-09-24"},{"lineNumber":266,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Description cannot be empty\");","lastModifiedDate":"2023-09-24"},{"lineNumber":267,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":268,"author":{"gitId":"rayyan35p"},"content":" String fromDate \u003d dateArray[0].trim();","lastModifiedDate":"2023-09-24"},{"lineNumber":269,"author":{"gitId":"rayyan35p"},"content":" String toDate \u003d dateArray[1].trim();","lastModifiedDate":"2023-09-24"},{"lineNumber":270,"author":{"gitId":"rayyan35p"},"content":" return new EventCommand(taskDescription + \" /from \" + fromDate + \" /to \" + toDate);","lastModifiedDate":"2023-09-24"},{"lineNumber":271,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":272,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-24"},{"lineNumber":273,"author":{"gitId":"rayyan35p"},"content":" private static Command parseUpdateCommand(String input) throws DukeException {","lastModifiedDate":"2023-09-24"},{"lineNumber":274,"author":{"gitId":"rayyan35p"},"content":" if (!input.split(\" \")[0].equals(\"update\")) {","lastModifiedDate":"2023-09-24"},{"lineNumber":275,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(INVALID_COMMAND);","lastModifiedDate":"2023-09-24"},{"lineNumber":276,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-24"},{"lineNumber":277,"author":{"gitId":"rayyan35p"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2023-09-24"},{"lineNumber":278,"author":{"gitId":"rayyan35p"},"content":" if (input.length() \u003d\u003d 6 || inputArray.length \u003d\u003d 1) {","lastModifiedDate":"2023-09-24"},{"lineNumber":279,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Input the task you would like to update.\");","lastModifiedDate":"2023-09-17"},{"lineNumber":280,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-17"},{"lineNumber":281,"author":{"gitId":"rayyan35p"},"content":" // length \u003d char length of \"update \" and task number","lastModifiedDate":"2023-09-17"},{"lineNumber":282,"author":{"gitId":"rayyan35p"},"content":" int taskNumber \u003d Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2023-09-17"},{"lineNumber":283,"author":{"gitId":"rayyan35p"},"content":" int updateCommandLength \u003d 7 + input.split(\" \")[1].length();","lastModifiedDate":"2023-09-17"},{"lineNumber":284,"author":{"gitId":"rayyan35p"},"content":" String newTaskDescription \u003d input.substring(updateCommandLength + 1);","lastModifiedDate":"2023-09-17"},{"lineNumber":285,"author":{"gitId":"rayyan35p"},"content":" Command newTask \u003d parse(newTaskDescription, true);","lastModifiedDate":"2023-09-17"},{"lineNumber":286,"author":{"gitId":"rayyan35p"},"content":" return new UpdateCommand(taskNumber, newTask);","lastModifiedDate":"2023-09-17"},{"lineNumber":287,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-23"},{"lineNumber":288,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"rayyan35p":288}},{"path":"src/main/java/bob/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.storage;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.File;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-15"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.DeadlineTask;","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.EventTask;","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.Task;","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.ToDoTask;","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" * Represents the logic for reading/writing the task data to the file.","lastModifiedDate":"2023-09-15"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"public class Storage {","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" /** The file for reading/writing the tasks from/to */","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" private File file;","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" * Constructs the storage which will create a new directory called \"data\" and a new file called \"duke.txt\" in data","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" * if not already created.","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" public Storage() {","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" File dataDirectory \u003d new File(\"./data\");","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" dataDirectory.mkdir();","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" assert dataDirectory.exists() : \"data directory should exist\";","lastModifiedDate":"2023-09-17"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" File taskFile \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" assert taskFile.exists() : \"taskFile should exist\";","lastModifiedDate":"2023-09-17"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" if (taskFile.createNewFile()) {","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Created new file to store your tasks!\");","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Existing task file exists. \");","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" this.file \u003d taskFile;","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Unable to create file.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" * Returns the file that was created during the instantiation of this Storage object.","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" * @return The file where the tasks are being read from or written to.","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" public File getFile() {","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" return this.file;","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-15"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" * Reads the tasks in the datafile and writes it to the ArrayList for use by the chatbot.","lastModifiedDate":"2023-09-15"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" * @param list The ArrayList to store the tasks in.","lastModifiedDate":"2023-09-15"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" * @throws FileNotFoundException if file cannot be found.","lastModifiedDate":"2023-09-15"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" * @throws DukeException if the EventTask is instantiated with wrong dates.","lastModifiedDate":"2023-09-15"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" public void readFromFile(ArrayList\u003cTask\u003e list) throws FileNotFoundException, DukeException {","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" String storedTask \u003d scanner.nextLine();","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" String[] taskArray \u003d storedTask.split(\",\");","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" Task task;","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" if (taskArray[0].startsWith(\"Todo\")) {","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" task \u003d new ToDoTask(taskArray[2]);","lastModifiedDate":"2023-09-15"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" } else if (taskArray[0].startsWith(\"Deadline\")) {","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" task \u003d new DeadlineTask(taskArray[2], taskArray[3]);","lastModifiedDate":"2023-09-15"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" } else if (taskArray[0].startsWith(\"Event\")) {","lastModifiedDate":"2023-09-23"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" task \u003d new EventTask(taskArray[2], taskArray[3], taskArray[4]);","lastModifiedDate":"2023-09-15"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" } else {","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" throw new DukeException(\"Corrupt file.\");","lastModifiedDate":"2023-09-23"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" if ((taskArray[1]).equals(\"1\")) {","lastModifiedDate":"2023-09-15"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-15"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" list.add(task);","lastModifiedDate":"2023-09-15"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" scanner.close();","lastModifiedDate":"2023-09-15"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" * Changes the class field file to a new location.","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" * @param file The new file to set storage to.","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" protected void setFile(File file) {","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" this.file \u003d file;","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"rayyan35p":90}},{"path":"src/main/java/bob/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.ui;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-24"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.paint.ImagePattern;","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" private Label dialog;","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" private Circle circle;","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-09"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-09"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-09"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-09"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-09"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-09"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-09"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" this.circle.setFill(new ImagePattern(img));","lastModifiedDate":"2023-09-09"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-09"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-09"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" private void flip() {","lastModifiedDate":"2023-09-09"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-09"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-09"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" DialogBox userDialog \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-24"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" userDialog.setMinHeight(Region.USE_PREF_SIZE);","lastModifiedDate":"2023-09-24"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" return userDialog;","lastModifiedDate":"2023-09-24"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-09"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-09"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" db.flip();","lastModifiedDate":"2023-09-09"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" db.setMinHeight(Region.USE_PREF_SIZE);","lastModifiedDate":"2023-09-24"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" return db;","lastModifiedDate":"2023-09-09"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":65}},{"path":"src/main/java/bob/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.ui;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import bob.Duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"/**","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" private Duke duke;","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.jpg\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/bob.png\"));","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-15"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" * Creates the dialogContainer with a starting message.","lastModifiedDate":"2023-09-15"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" public void initialize() {","lastModifiedDate":"2023-09-09"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-09"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-09"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" DialogBox.getDukeDialog(\"Hello, my name is Bob! What can I do for you?\", dukeImage)","lastModifiedDate":"2023-09-09"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" );","lastModifiedDate":"2023-09-09"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" sendButton.setDefaultButton(true);","lastModifiedDate":"2023-09-24"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-09"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-09"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" /**","lastModifiedDate":"2023-09-09"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-09"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-09"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" */","lastModifiedDate":"2023-09-09"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" @FXML","lastModifiedDate":"2023-09-09"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-09"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-09"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-09"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-17"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-09"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-09"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" );","lastModifiedDate":"2023-09-09"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" userInput.clear();","lastModifiedDate":"2023-09-09"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-09"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" Platform.exit();","lastModifiedDate":"2023-09-09"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-09"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":64}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" cache\u003d\"true\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/20.0.1\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" \u003cInsets right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" \u003cfont\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" \u003cFont name\u003d\"Malgun Gothic\" size\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" \u003c/font\u003e\u003c/Label\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" \u003cStackPane prefHeight\u003d\"43.0\" prefWidth\u003d\"112.0\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" \u003cCircle fx:id\u003d\"circle\" radius\u003d\"50.0\" stroke\u003d\"BLACK\" strokeType\u003d\"INSIDE\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" \u003cInsets /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":30}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"bob.ui.MainWindow\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-09"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-09"}],"authorContributionMap":{"rayyan35p":18}},{"path":"src/test/java/bob/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-09"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"public class DukeTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" public void dummyTest() {","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"rayyan35p":12}},{"path":"src/test/java/bob/data/task/DeadlineTaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class DeadlineTaskTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask testTask \u003d new DeadlineTask(\"test\", \"01/01/2023 1200\");","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[D][ ] test (by: 01 Jan 2023 12:00 PM)\", testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" testTask.setDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[D][X] test (by: 01 Jan 2023 12:00 PM)\", testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public void getType_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Deadline\", new DeadlineTask(\"test\", \"01/01/2023 1200\").getType());","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public void getDateTime_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"01/01/2023 1200\",","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" new DeadlineTask(\"test\", \"01/01/2023 1200\").getDateTime());","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_completedTask_stringWithCompleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask task \u003d new DeadlineTask(\"test\", \"01/01/2023 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Deadline,0,test,01/01/2023 1200\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_incompleteTask_stringWithIncomplete() {","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask task \u003d new DeadlineTask(\"test\", \"01/01/2023 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Deadline,1,test,01/01/2023 1200\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"rayyan35p":38}},{"path":"src/test/java/bob/data/task/EventTaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-15"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"public class EventTaskTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" EventTask testTask \u003d new EventTask(\"test\",","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" \"01/01/2023 1200\", \"02/01/2023 1200\");","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[E][ ] test (from: 01 Jan 2023 12:00 PM to: 02 Jan 2023 12:00 PM)\",","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" testTask.setDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[E][X] test (from: 01 Jan 2023 12:00 PM to: 02 Jan 2023 12:00 PM)\",","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" public void getType_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Event\", new EventTask(\"test\",","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" \"01/01/2023 1200\", \"02/01/2023 1200\").getType());","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" public void getDateTime_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"01/01/2023 1200,02/01/2023 1200\", new EventTask(\"test\",","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" \"01/01/2023 1200\", \"02/01/2023 1200\").getDateTime());","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" public void testInvalidToDate() {","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, () -\u003e new EventTask(\"test\",","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" \"02/01/2023 1200\", \"01/01/2023 1200\"),","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" \"Expected constructor to throw, but it didn\u0027t\");","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Your start date is either the same or after your end date!\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_completedTask_stringWithCompleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" EventTask task \u003d new EventTask(\"test\",","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" \"01/01/2023 1200\", \"02/01/2023 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Event,0,test,01/01/2023 1200,02/01/2023 1200\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_incompleteTask_stringWithIncomplete() {","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" EventTask task \u003d new EventTask(\"test\",","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" \"01/01/2023 1200\", \"02/01/2023 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Event,1,test,01/01/2023 1200,02/01/2023 1200\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"rayyan35p":83}},{"path":"src/test/java/bob/data/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import bob.parser.Parser;","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"public class TaskListTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" public void setTaskComplete_correctMarkTaskInput_taskSetAsComplete() {","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" assertTrue(testList.setTaskComplete(\"mark 1\").contains(\"OK, I\u0027ve marked this task as done:\\n\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" public void setTaskComplete_markTaskInputOutOfRange_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, ()","lastModifiedDate":"2023-09-24"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" -\u003e testList.setTaskComplete(\"mark 2\"),","lastModifiedDate":"2023-09-24"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" \"Expected setTaskComplete to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Task number out of range!\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" public void setTaskIncomplete_correctUnmarkTaskInput_taskSetAsIncomplete() {","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" assertTrue(testList.setTaskIncomplete(\"unmark 1\").contains(\"OK, I\u0027ve marked this task as not done yet:\\n\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" public void setTaskIncomplete_unmarkTaskInputOutOfRange_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, ()","lastModifiedDate":"2023-09-24"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" -\u003e testList.setTaskComplete(\"unmark 2\"),","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" \"Expected setTaskIncomplete to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Task number out of range!\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" public void deleteTask_correctDeleteTaskInput_taskDeleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" assertTrue(testList.deleteTask(\"delete 1\").contains(\"Noted. I\u0027ve removed this task:\\n\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" public void deleteTask_deleteTaskInputOutOfRange_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, ()","lastModifiedDate":"2023-09-24"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" -\u003e testList.deleteTask(\"delete 2\"),","lastModifiedDate":"2023-09-24"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" \"Expected deleteTask to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Task number out of range!\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" public void deleteTaskAtIndex_correctIndex_taskAtIndexDeleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" testList.deleteTaskAtIndex(0);","lastModifiedDate":"2023-09-23"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" assertTrue(testList.getSize() \u003d\u003d 0);","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":" public void deleteTaskAtIndex_indexOutOfRange_taskAtIndexDeleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, ()","lastModifiedDate":"2023-09-24"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":" -\u003e testList.deleteTaskAtIndex(2),","lastModifiedDate":"2023-09-24"},{"lineNumber":115,"author":{"gitId":"rayyan35p"},"content":" \"Expected deleteTaskAtIndex to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Task number out of range!\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":122,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"rayyan35p"},"content":" public void testToString() {","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":128,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.DEADLINE, \"deadline test /by 12/12/2024 1200\");","lastModifiedDate":"2023-09-23"},{"lineNumber":129,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.EVENT,","lastModifiedDate":"2023-09-24"},{"lineNumber":130,"author":{"gitId":"rayyan35p"},"content":" \"event test /from 12/12/2024 1200 /to 13/12/2024 1200\");","lastModifiedDate":"2023-09-24"},{"lineNumber":131,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"1.[T][ ] test\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"rayyan35p"},"content":" + \"2.[D][ ] test (by: 12 Dec 2024 12:00 PM)\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"rayyan35p"},"content":" + \"3.[E][ ] test (from: 12 Dec 2024 12:00 PM to: 13 Dec 2024 12:00 PM)\",","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"rayyan35p"},"content":" testList.toString());","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":138,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"rayyan35p"},"content":" public void find_findableInput_taskFound() {","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":146,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"1.[T][ ] test\", testList.find(\"find test\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":147,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":148,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":149,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":150,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":151,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":152,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":153,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":154,"author":{"gitId":"rayyan35p"},"content":" public void find_unfindableInput_nothingFound() {","lastModifiedDate":"2023-09-22"},{"lineNumber":155,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":156,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":157,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":158,"author":{"gitId":"rayyan35p"},"content":" assertTrue(testList.find(\"find lol\").contains(\"No tasks found matching that description.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":159,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":160,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":161,"author":{"gitId":"rayyan35p"},"content":" fail(\"An exception was thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":162,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":163,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":164,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":165,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":166,"author":{"gitId":"rayyan35p"},"content":" public void swap_correctIndexes_tasksSwapped() {","lastModifiedDate":"2023-09-22"},{"lineNumber":167,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":168,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":169,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.TODO, \"todo test\");","lastModifiedDate":"2023-09-23"},{"lineNumber":170,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.DEADLINE, \"deadline test /by 12/12/2024 1200\");","lastModifiedDate":"2023-09-23"},{"lineNumber":171,"author":{"gitId":"rayyan35p"},"content":" testList.addTaskWithCommand(Parser.CommandType.EVENT,","lastModifiedDate":"2023-09-24"},{"lineNumber":172,"author":{"gitId":"rayyan35p"},"content":" \"event test /from 12/12/2024 1200 /to 13/12/2024 1200\");","lastModifiedDate":"2023-09-24"},{"lineNumber":173,"author":{"gitId":"rayyan35p"},"content":" testList.swap(0, 2);","lastModifiedDate":"2023-09-22"},{"lineNumber":174,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"1.[E][ ] test (from: 12 Dec 2024 12:00 PM to: 13 Dec 2024 12:00 PM)\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":175,"author":{"gitId":"rayyan35p"},"content":" + \"2.[D][ ] test (by: 12 Dec 2024 12:00 PM)\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":176,"author":{"gitId":"rayyan35p"},"content":" + \"3.[T][ ] test\",","lastModifiedDate":"2023-09-22"},{"lineNumber":177,"author":{"gitId":"rayyan35p"},"content":" testList.toString());","lastModifiedDate":"2023-09-22"},{"lineNumber":178,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":179,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":180,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":181,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":182,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":183,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":184,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":185,"author":{"gitId":"rayyan35p"},"content":" public void swap_indexesOutOfRange_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":186,"author":{"gitId":"rayyan35p"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2023-09-22"},{"lineNumber":187,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, () -\u003e testList.swap(-1, 2),","lastModifiedDate":"2023-09-23"},{"lineNumber":188,"author":{"gitId":"rayyan35p"},"content":" \"Expected swap to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":189,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"task number out of range!\"));","lastModifiedDate":"2023-09-23"},{"lineNumber":190,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":191,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"rayyan35p":191}},{"path":"src/test/java/bob/data/task/ToDoTaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.data.task;","lastModifiedDate":"2023-09-09"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-15"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"public class ToDoTaskTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":" public void testStringConversion() {","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":" ToDoTask testTask \u003d new ToDoTask(\"test\");","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[T][ ] test\", testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" testTask.setDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"[T][X] test\", testTask.toString());","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" public void getType_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Todo\", new ToDoTask(\"test\").getType());","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":" public void getDateTime_emptyInput_correctString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"\", new ToDoTask(\"test\").getDateTime());","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_completedTask_stringWithCompleted() {","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d new ToDoTask(\"test\");","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Todo,0,test\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" public void toFileString_incompleteTask_stringWithIncomplete() {","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" Task task \u003d new ToDoTask(\"test\");","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" task.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" assertEquals(\"Todo,1,test\\n\", task.toFileString());","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"rayyan35p":37}},{"path":"src/test/java/bob/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.parser;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-23"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-23"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":" private static final String INPUT_TASK_NUMBER \u003d \"Input the task number\";","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":" private static final String INVALID_COMMAND \u003d \"Invalid command\";","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":" private static final String INVALID_TASK_NUMBER \u003d \"The task number was wrongly input.\";","lastModifiedDate":"2023-09-24"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":" public void parse_invalidCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"invalidCommand test test\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"No such command.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":" public void parse_badByeCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"byelol\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"No such command.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" public void parse_badListCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"listlol\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"No such command.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyMarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"mark\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INPUT_TASK_NUMBER));","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" public void parse_extraInputsMarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"mark 1 1\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_COMMAND));","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" public void parse_invalidInputMarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"mark lol\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_TASK_NUMBER));","lastModifiedDate":"2023-09-24"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyUnmarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"unmark\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INPUT_TASK_NUMBER));","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" public void parse_extraInputsUnmarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"unmark 1 1\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_COMMAND));","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" public void parse_invalidInputUnmarkCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"unmark lol\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_TASK_NUMBER));","lastModifiedDate":"2023-09-24"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyDeleteCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"delete\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INPUT_TASK_NUMBER));","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" public void parse_extraInputsDeleteCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"delete 1 1\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_COMMAND));","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":" public void parse_invalidInputDeleteCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"delete lol\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(INVALID_TASK_NUMBER));","lastModifiedDate":"2023-09-24"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyFindCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":113,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"find\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":114,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":115,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Input something to search for.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":116,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":117,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":118,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":119,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyTodoCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":120,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":121,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"todo\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":122,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":123,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Description of a todo cannot be empty\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":124,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":125,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":126,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":127,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyDeadlineCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":128,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":129,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"deadline\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":130,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":131,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Description of a deadline cannot be empty\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":132,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":133,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":134,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":135,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyEventCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":136,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":137,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"event\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":138,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":139,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Description of an event cannot be empty\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":140,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":141,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":142,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":143,"author":{"gitId":"rayyan35p"},"content":" public void parse_emptyUpdateCommand_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":144,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(","lastModifiedDate":"2023-09-22"},{"lineNumber":145,"author":{"gitId":"rayyan35p"},"content":" DukeException.class, () -\u003e Parser.parse(\"update\", false),","lastModifiedDate":"2023-09-23"},{"lineNumber":146,"author":{"gitId":"rayyan35p"},"content":" \"Expected parse to throw but it didn\u0027t.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":147,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Input the task you would like to update.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":148,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":149,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"rayyan35p":149}},{"path":"src/test/java/bob/storage/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"package bob.storage;","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2023-09-22"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-22"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"import java.io.File;","lastModifiedDate":"2023-09-22"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-22"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-22"},{"lineNumber":12,"author":{"gitId":"rayyan35p"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-22"},{"lineNumber":13,"author":{"gitId":"rayyan35p"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-22"},{"lineNumber":14,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":15,"author":{"gitId":"rayyan35p"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-22"},{"lineNumber":16,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":17,"author":{"gitId":"rayyan35p"},"content":"import bob.data.exception.DukeException;","lastModifiedDate":"2023-09-22"},{"lineNumber":18,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.DeadlineTask;","lastModifiedDate":"2023-09-22"},{"lineNumber":19,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.EventTask;","lastModifiedDate":"2023-09-22"},{"lineNumber":20,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.Task;","lastModifiedDate":"2023-09-22"},{"lineNumber":21,"author":{"gitId":"rayyan35p"},"content":"import bob.data.task.ToDoTask;","lastModifiedDate":"2023-09-22"},{"lineNumber":22,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":23,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":24,"author":{"gitId":"rayyan35p"},"content":"public class StorageTest {","lastModifiedDate":"2023-09-22"},{"lineNumber":25,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":26,"author":{"gitId":"rayyan35p"},"content":" public void storage_fileExists_existingFileUsed() {","lastModifiedDate":"2023-09-22"},{"lineNumber":27,"author":{"gitId":"rayyan35p"},"content":" File taskFile \u003d new File(\"./test.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":28,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":29,"author":{"gitId":"rayyan35p"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-09-22"},{"lineNumber":30,"author":{"gitId":"rayyan35p"},"content":" assertFalse(taskFile.createNewFile());","lastModifiedDate":"2023-09-22"},{"lineNumber":31,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":32,"author":{"gitId":"rayyan35p"},"content":" System.out.println(\"Unable to create file.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":33,"author":{"gitId":"rayyan35p"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-22"},{"lineNumber":34,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":35,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":36,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":37,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":38,"author":{"gitId":"rayyan35p"},"content":" public void readFromFile_goodFile_storedTasksAddedToList() {","lastModifiedDate":"2023-09-22"},{"lineNumber":39,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":40,"author":{"gitId":"rayyan35p"},"content":" ArrayList\u003cTask\u003e testList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-22"},{"lineNumber":41,"author":{"gitId":"rayyan35p"},"content":" ToDoTask toDoTest \u003d new ToDoTask(\"todotest\");","lastModifiedDate":"2023-09-22"},{"lineNumber":42,"author":{"gitId":"rayyan35p"},"content":" ToDoTask toDoTest2 \u003d new ToDoTask(\"todotest2\");","lastModifiedDate":"2023-09-22"},{"lineNumber":43,"author":{"gitId":"rayyan35p"},"content":" toDoTest2.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":44,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask deadlineTest \u003d new DeadlineTask(\"deadlinetest\", \"12/12/2024 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":45,"author":{"gitId":"rayyan35p"},"content":" DeadlineTask deadlineTest2 \u003d new DeadlineTask(\"deadlinetest2\", \"12/12/2024 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":46,"author":{"gitId":"rayyan35p"},"content":" deadlineTest2.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":47,"author":{"gitId":"rayyan35p"},"content":" EventTask eventTest \u003d new EventTask(","lastModifiedDate":"2023-09-22"},{"lineNumber":48,"author":{"gitId":"rayyan35p"},"content":" \"eventtest\",","lastModifiedDate":"2023-09-22"},{"lineNumber":49,"author":{"gitId":"rayyan35p"},"content":" \"12/12/2024 1200\",","lastModifiedDate":"2023-09-22"},{"lineNumber":50,"author":{"gitId":"rayyan35p"},"content":" \"13/12/2024 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":51,"author":{"gitId":"rayyan35p"},"content":" EventTask eventTest2 \u003d new EventTask(","lastModifiedDate":"2023-09-22"},{"lineNumber":52,"author":{"gitId":"rayyan35p"},"content":" \"eventtest2\",","lastModifiedDate":"2023-09-22"},{"lineNumber":53,"author":{"gitId":"rayyan35p"},"content":" \"12/12/2024 1200\",","lastModifiedDate":"2023-09-22"},{"lineNumber":54,"author":{"gitId":"rayyan35p"},"content":" \"13/12/2024 1200\");","lastModifiedDate":"2023-09-22"},{"lineNumber":55,"author":{"gitId":"rayyan35p"},"content":" eventTest2.setDone();","lastModifiedDate":"2023-09-22"},{"lineNumber":56,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":57,"author":{"gitId":"rayyan35p"},"content":" testList.add(toDoTest);","lastModifiedDate":"2023-09-22"},{"lineNumber":58,"author":{"gitId":"rayyan35p"},"content":" testList.add(toDoTest2);","lastModifiedDate":"2023-09-22"},{"lineNumber":59,"author":{"gitId":"rayyan35p"},"content":" testList.add(deadlineTest);","lastModifiedDate":"2023-09-22"},{"lineNumber":60,"author":{"gitId":"rayyan35p"},"content":" testList.add(deadlineTest2);","lastModifiedDate":"2023-09-22"},{"lineNumber":61,"author":{"gitId":"rayyan35p"},"content":" testList.add(eventTest);","lastModifiedDate":"2023-09-22"},{"lineNumber":62,"author":{"gitId":"rayyan35p"},"content":" testList.add(eventTest2);","lastModifiedDate":"2023-09-22"},{"lineNumber":63,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":64,"author":{"gitId":"rayyan35p"},"content":" FileWriter writer \u003d new FileWriter(\"test.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":65,"author":{"gitId":"rayyan35p"},"content":" writer.write(","lastModifiedDate":"2023-09-23"},{"lineNumber":66,"author":{"gitId":"rayyan35p"},"content":" \"Todo,0,todotest\\n\"","lastModifiedDate":"2023-09-23"},{"lineNumber":67,"author":{"gitId":"rayyan35p"},"content":" + \"Todo,1,todotest2\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":68,"author":{"gitId":"rayyan35p"},"content":" + \"Deadline,0,deadlinetest,12/12/2024 1200\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":69,"author":{"gitId":"rayyan35p"},"content":" + \"Deadline,1,deadlinetest2,12/12/2024 1200\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":70,"author":{"gitId":"rayyan35p"},"content":" + \"Event,0,eventtest,12/12/2024 1200,13/12/2024 1200\\n\"","lastModifiedDate":"2023-09-22"},{"lineNumber":71,"author":{"gitId":"rayyan35p"},"content":" + \"Event,1,eventtest2,12/12/2024 1200,13/12/2024 1200\\n\"","lastModifiedDate":"2023-09-23"},{"lineNumber":72,"author":{"gitId":"rayyan35p"},"content":" );","lastModifiedDate":"2023-09-23"},{"lineNumber":73,"author":{"gitId":"rayyan35p"},"content":" writer.close();","lastModifiedDate":"2023-09-22"},{"lineNumber":74,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":75,"author":{"gitId":"rayyan35p"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-22"},{"lineNumber":76,"author":{"gitId":"rayyan35p"},"content":" File taskFile \u003d new File(\"./test.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":77,"author":{"gitId":"rayyan35p"},"content":" storage.setFile(taskFile);","lastModifiedDate":"2023-09-22"},{"lineNumber":78,"author":{"gitId":"rayyan35p"},"content":" ArrayList\u003cTask\u003e outputList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-22"},{"lineNumber":79,"author":{"gitId":"rayyan35p"},"content":" storage.readFromFile(outputList);","lastModifiedDate":"2023-09-22"},{"lineNumber":80,"author":{"gitId":"rayyan35p"},"content":" assertEquals(testList, outputList);","lastModifiedDate":"2023-09-22"},{"lineNumber":81,"author":{"gitId":"rayyan35p"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":82,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":83,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-23"},{"lineNumber":84,"author":{"gitId":"rayyan35p"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":85,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":86,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-23"},{"lineNumber":87,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":88,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":89,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":90,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":91,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":92,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":93,"author":{"gitId":"rayyan35p"},"content":" @Test","lastModifiedDate":"2023-09-22"},{"lineNumber":94,"author":{"gitId":"rayyan35p"},"content":" public void readFromFile_badFile_exceptionThrown() {","lastModifiedDate":"2023-09-22"},{"lineNumber":95,"author":{"gitId":"rayyan35p"},"content":" try {","lastModifiedDate":"2023-09-22"},{"lineNumber":96,"author":{"gitId":"rayyan35p"},"content":" FileWriter writer \u003d new FileWriter(\"test.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":97,"author":{"gitId":"rayyan35p"},"content":" writer.write(\"Tod0,0,todotest\\n\");","lastModifiedDate":"2023-09-23"},{"lineNumber":98,"author":{"gitId":"rayyan35p"},"content":" writer.close();","lastModifiedDate":"2023-09-22"},{"lineNumber":99,"author":{"gitId":"rayyan35p"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-22"},{"lineNumber":100,"author":{"gitId":"rayyan35p"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-22"},{"lineNumber":101,"author":{"gitId":"rayyan35p"},"content":" fail(\"Expected exception not thrown.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":102,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":103,"author":{"gitId":"rayyan35p"},"content":"","lastModifiedDate":"2023-09-22"},{"lineNumber":104,"author":{"gitId":"rayyan35p"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-22"},{"lineNumber":105,"author":{"gitId":"rayyan35p"},"content":" File taskFile \u003d new File(\"./test.txt\");","lastModifiedDate":"2023-09-22"},{"lineNumber":106,"author":{"gitId":"rayyan35p"},"content":" storage.setFile(taskFile);","lastModifiedDate":"2023-09-22"},{"lineNumber":107,"author":{"gitId":"rayyan35p"},"content":" ArrayList\u003cTask\u003e output \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-22"},{"lineNumber":108,"author":{"gitId":"rayyan35p"},"content":" DukeException thrown \u003d assertThrows(DukeException.class, () -\u003e storage.readFromFile(output),","lastModifiedDate":"2023-09-22"},{"lineNumber":109,"author":{"gitId":"rayyan35p"},"content":" \"Expected readFromFile to throw but it did not.\");","lastModifiedDate":"2023-09-22"},{"lineNumber":110,"author":{"gitId":"rayyan35p"},"content":" assertTrue(thrown.getMessage().contains(\"Corrupt file.\"));","lastModifiedDate":"2023-09-22"},{"lineNumber":111,"author":{"gitId":"rayyan35p"},"content":" }","lastModifiedDate":"2023-09-22"},{"lineNumber":112,"author":{"gitId":"rayyan35p"},"content":"}","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"rayyan35p":112}},{"path":"src/test/java/bob/storage/test.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"Todo,0,todotest","lastModifiedDate":"2023-09-22"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"Todo,1,todotest2","lastModifiedDate":"2023-09-22"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"Deadline,0,deadlinetest,12/12/2024 1200","lastModifiedDate":"2023-09-22"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"Deadline,1,deadlinetest2,12/12/2024 1200","lastModifiedDate":"2023-09-22"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"Event,0,eventtest,12/12/2024 1200,13/12/2024 1200","lastModifiedDate":"2023-09-22"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"Event,1,eventtest2,12/12/2024 1200,13/12/2024 1200","lastModifiedDate":"2023-09-22"}],"authorContributionMap":{"rayyan35p":6}},{"path":"test.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"Tod0,0,todotest","lastModifiedDate":"2023-09-23"}],"authorContributionMap":{"rayyan35p":1}},{"path":"text-ui-test/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"Todo,1,read book","lastModifiedDate":"2023-09-01"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"Deadline,0,return book,06/06/2023 1200","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"Event,0,project meeting,06/08/2023 1400,06/08/2023 1600","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"Todo,1,join sports club","lastModifiedDate":"2023-09-01"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"Todo,0,borrow book","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"rayyan35p":5}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"rayyan35p"},"content":"todo read book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"rayyan35p"},"content":"deadline return book /by 06/06/2023 1200","lastModifiedDate":"2023-09-01"},{"lineNumber":3,"author":{"gitId":"rayyan35p"},"content":"event project meeting /from 06/08/2023 1400 /to 06/08/2023 1600","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"rayyan35p"},"content":"todo join sports club","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"rayyan35p"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"rayyan35p"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"rayyan35p"},"content":"mark 4","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"rayyan35p"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"rayyan35p"},"content":"unmark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"rayyan35p"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"rayyan35p"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"rayyan35p":11}}] diff --git a/rayyan35p_ip_master/commits.json b/rayyan35p_ip_master/commits.json index 7f90e4a2..5dc8da11 100644 --- a/rayyan35p_ip_master/commits.json +++ b/rayyan35p_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"rayyan35p":[{"date":"2023-08-20","commitResults":[{"hash":"50891bd022c5a5fa06656a9757f4aa62f4910adf","isMergeCommit":false,"messageTitle":"Replace initial code with new skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"c9e96866874dc97cdfdab8f0410219c3313d0986","isMergeCommit":false,"messageTitle":"Modify chatbot to echo user commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"5e321267466296aca46995eb62123db630e0b3a0","isMergeCommit":false,"messageTitle":"Add ability to store tasks in a list and print the list","messageBody":"","tags":["Level-2","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}}]},{"date":"2023-08-21","commitResults":[{"hash":"4d7212e3f57d5133d3f753009342549ab2d679a7","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"89bd671db9e3737ec25f2299349181790cb55ea9","isMergeCommit":false,"messageTitle":"Update Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"1cd7e16c24e9162bff163c6f870e165359367160","isMergeCommit":false,"messageTitle":"Add TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"cbc3c8be50e99d209df635fc4752a3484a9bffbe","isMergeCommit":false,"messageTitle":"Integrate Task and TaskList into main code","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":7}}},{"hash":"5df1c0e4d38206529278f67d7a2ac8b9f458a851","isMergeCommit":false,"messageTitle":"Add Deadline, Event, ToDo classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"58631d71470d82ec2099e4a564a70560a29f6f42","isMergeCommit":false,"messageTitle":"Update TaskList class with print statements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"d928fcbc1acec1d8b6b63285318bdf10583e6bcd","isMergeCommit":false,"messageTitle":"Integrate new task classes into main code","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":8}}},{"hash":"f555cca75ddb17e68392381abbb68765a1edd874","isMergeCommit":false,"messageTitle":"Remove redundant line","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"9bbe609962d15fad08f1e59357657e7452115f9f","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"2341a4d27de4a7ae092ccbc04c3b6ca42501d626","isMergeCommit":false,"messageTitle":"Add DukeException","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"5d7e5dc25b52e91c0982c8c024a28861177eb071","isMergeCommit":false,"messageTitle":"Modify main code to catch exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":36}}},{"hash":"21eb78729d14f11c332df99dcb8ee40ea93eaa2c","isMergeCommit":false,"messageTitle":"Add deleteTask method to TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"1810dcdb0e5a898516e8debbaa9d68b7d677bd7d","isMergeCommit":false,"messageTitle":"Modify main code to allow chatbot to delete tasks from list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"dc4caafd0924a5059c008936447b8a6b7fa97f3c","isMergeCommit":false,"messageTitle":"Add code to create a folder and file to store tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"464291f09411dd547e825a8098a3afbb029b337e","isMergeCommit":false,"messageTitle":"Update task classes with methods needed for I/O","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":1}}},{"hash":"096fc3b65d28850f485d81892ad4ab12de53f306","isMergeCommit":false,"messageTitle":"Update TaskList class to write tasks to a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":0}}},{"hash":"c27c82966b54ed9736fd76a80af86e6bc569c52e","isMergeCommit":false,"messageTitle":"Integrate file writing operations into main","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"183caa34e15cf03ce3c62e1c6742d125f4c4a3ce","isMergeCommit":false,"messageTitle":"Modify main code to read previously stored tasks from a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"9659b1d04c19cdb5d4f4e88e062c178c46b1f8aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"44cac1b77de81a764e7057f5d7ef31f37067925b","isMergeCommit":false,"messageTitle":"Fix bug where directory to store tasks is not made","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"283fa328b1d8c4521afcc5129231e86d58e34875","isMergeCommit":false,"messageTitle":"Add LocalDateTime functionality to task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":7}}},{"hash":"7581beba0eb14609865e9cea41277632eaa4953d","isMergeCommit":false,"messageTitle":"Update LocalDateTime functionality in task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":10}}},{"hash":"38331b41b1f4a3e828a1b143acc832962a59a701","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"b5c94ef67ab951b00b2bae3e9ad744010fc80e5c","isMergeCommit":false,"messageTitle":"Add Storage class for handling file operations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"6b4b33aa513ce3173f40e8b92c02474ef986323b","isMergeCommit":false,"messageTitle":"Integrate Storage class in main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":14}}}]},{"date":"2023-09-01","commitResults":[{"hash":"469142bf47c138eee21397ef2f0744991d188f66","isMergeCommit":false,"messageTitle":"Add Parser Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":0}}},{"hash":"dac578dbb8e60bc1f834a5a0c3990fcf3db01a71","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"ef368b10df273e5bfbca8f1800e6b4ed2b6e6cc8","isMergeCommit":false,"messageTitle":"Add new methods to TaskList class for executing commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":0}}},{"hash":"a09276750677fd66c84c21d513b08abd16f44b49","isMergeCommit":false,"messageTitle":"Integrate Parser class into main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":67}}},{"hash":"873f5083390ce11356120a71db1025718d1b4014","isMergeCommit":false,"messageTitle":"Add Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"fc15aa6ec3755e9f6667e4984904664c713948be","isMergeCommit":false,"messageTitle":"Integrate Ui class into main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"87c4caaab81b90f203f16d7bb92dad045f62219c","isMergeCommit":false,"messageTitle":"Update input.txt with correct datetime format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2}}},{"hash":"924ccfc53cba196bdf80fa7f36064b71e3037287","isMergeCommit":false,"messageTitle":"Add new method to Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"52f069f193417e151e983d65925003519eea4acc","isMergeCommit":false,"messageTitle":"Implement Ui.bye() for bye command in main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c368c2ef25a5d4ba7f32efbd1c2875fe18768ee3","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":11}}},{"hash":"f13abdc2eed9ba3864bc910166fab622fefe072c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"1199b3ea53780157ff47de11275c0d12408394e5","isMergeCommit":false,"messageTitle":"Put classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":13}}},{"hash":"d272d29071428abfe3d8670755a7440f6cdb63a6","isMergeCommit":false,"messageTitle":"Modify expected output to match new input text for tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"9402a3ed1990117a7d5f9ab784d8bfe4ecff474e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"153998f915071d5e72b7924d30e7da5633a05115","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a59aa171d91dcd78fb028a04c7da3fbc2eb5263d","isMergeCommit":false,"messageTitle":"Set mainClassName to be Duke","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-02","commitResults":[{"hash":"e45233f4449c31c23e94348487aac961ac364627","isMergeCommit":false,"messageTitle":"Add new method open() for reading file into TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}}]},{"date":"2023-09-03","commitResults":[{"hash":"65574828b2cb336bb18a05f037604b89a22be5de","isMergeCommit":false,"messageTitle":"Update error message for FileNotFoundException in open()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"ffefbf56f3ff6f4d17ac40ef443a8ca8a745fb65","isMergeCommit":false,"messageTitle":"Add JUnit test for Task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":0}}},{"hash":"37d9b17625270062cae8782d1e7c2f349bbb1e9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-JUnit\u0027","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"680b6a2c52cb60392da578a000fbe7024b520756","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":219,"deletions":1}}},{"hash":"cd5ea13272445a2dc853c29d363ee1e7ea5799fc","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":34}}},{"hash":"51dcb8ce89442b7091c89b75a1adc227a60f51a2","isMergeCommit":false,"messageTitle":"Add print method to Ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"ccb6235a0559eda3083124b1e90856ab1ae248a0","isMergeCommit":false,"messageTitle":"Modify methods in TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"0c8cfd1727de7160d73d21a6422eaa4a71f1d73c","isMergeCommit":false,"messageTitle":"Add find feature to main code with its relevant methods in the classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":1}}},{"hash":"4152fadca8587dede5c4d93616f8a4e5c44898ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"01181eedeca69bc0331b01cd63427553a6dd69af","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/data/task/TaskList.java\n","fileTypesAndContributionMap":{}},{"hash":"74cf6307f6fd669c288e86c3932482a7f57ec068","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/data/exception/DukeException.java\n#\tsrc/main/java/data/task/TaskList.java\n#\tsrc/main/java/ui/Ui.java\n","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"78049bc6e370c3b8c6d4bb77d0e531b18d13f99d","isMergeCommit":false,"messageTitle":"Fix variable names","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":7}}}]},{"date":"2023-09-08","commitResults":[{"hash":"b24d29f2d4a02c68eae4f43875a04b7264365c5e","isMergeCommit":false,"messageTitle":"Add JavaFX dependencies to build.gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0}}}]},{"date":"2023-09-09","commitResults":[{"hash":"e34a2ac38c376dde54b95ce027fc82a76785bc52","isMergeCommit":false,"messageTitle":"Move all files into bob package","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":33,"deletions":31},"md":{"insertions":1,"deletions":1}}},{"hash":"d256d20f3410717d3e683e9827352310376f115d","isMergeCommit":false,"messageTitle":"Add GUI elements","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":168,"deletions":0}}},{"hash":"d0cbeb96d58478d7fb529604fdb7bd0d36bf5534","isMergeCommit":false,"messageTitle":"Add changes to GUI","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":19,"deletions":4},"java":{"insertions":4,"deletions":3}}},{"hash":"1d79bdbbc1e2e216b5dac74df6f60c76eec532c4","isMergeCommit":false,"messageTitle":"Integrate commands into GUI","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":2,"deletions":2},"java":{"insertions":69,"deletions":33}}},{"hash":"a4de971397fa8bb05858c7f7145f0507a11d5dd7","isMergeCommit":false,"messageTitle":"Modify GUI to close on bye command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"7e632294fc92d2dce863fff773b221746c41e8a5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-GUI\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}},{"hash":"d3c4e1afaa7ad6da75b511dad8863f52c0e2ff7e","isMergeCommit":false,"messageTitle":"Add checkstyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":11,"deletions":11}}}]},{"date":"2023-09-15","commitResults":[{"hash":"ad3fa66545b0bdf4c82fc1c139fcb726bbd7e45e","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":0,"deletions":2},"java":{"insertions":90,"deletions":61}}},{"hash":"92fd1b09bba3ec67c783a35f30b56c38f140ab04","isMergeCommit":false,"messageTitle":"Remove deep nesting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":30}}},{"hash":"5b5cc296a3d685a30aea5138bbda69b3109ed8f9","isMergeCommit":false,"messageTitle":"Add Command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":0}}}]},{"date":"2023-09-17","commitResults":[{"hash":"5393057596b1d62d3b9c38f9f302a13f50bcc4e6","isMergeCommit":false,"messageTitle":"Move logic of commands into individual Command classes","messageBody":"Execution of commands is being done by TaskList class instead of\ncommand classes.\n\nIt may be difficult to ascertain any bugs with Command logic or TaskList\nlogic if they are not separated.\n\nThe logic of commands being executed will be handled by the command\nclasses instead of the TaskList class so TaskList will only have methods\nrelevant to the TaskList.\n\nWith proper separation of behaviors into relevant classes, the code will\nbe clearer.\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":179,"deletions":218}}},{"hash":"769f63abcb995c3527afe74c3d320b4af3efbf4d","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":0}}},{"hash":"a316715177f1ab4fde940b670a92b2b29d1a8087","isMergeCommit":false,"messageTitle":"Remove redundant lines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":116}}},{"hash":"573a0763ac5cf08a827cef653cb738313d9dab23","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":19,"deletions":0}}},{"hash":"dd52708b944e4b4776b5adec484ce7df7ef7b982","isMergeCommit":true,"messageTitle":"Merge pull request #2 from rayyan35p/branch-A-Assertions","messageBody":"Add assertions","tags":["A-Assertions"],"fileTypesAndContributionMap":{}},{"hash":"726f0ff2030788bf80d30866769b0750f79d069e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-CodeQuality","messageBody":"# Conflicts:\n#\tsrc/main/java/bob/data/task/TaskList.java\n#\tsrc/main/java/bob/parser/Parser.java\n","fileTypesAndContributionMap":{}},{"hash":"7817dc21e8d0576373c77e22b50f56b5f88b9a6e","isMergeCommit":true,"messageTitle":"Merge pull request #3 from rayyan35p/branch-A-CodeQuality","messageBody":"Merge Code Quality Branch","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{}},{"hash":"645be8ea0b76b4a07d32e2c191c39f531e5bc6ac","isMergeCommit":false,"messageTitle":"Add ability to update tasks in the list","messageBody":"Not able to update the details of tasks.\n\nUsers will have to delete tasks and re-add them back with the correct\ndetails in order to \"update\" them.\n\nLet\u0027s make a new UpdateCommand to facilitate updating tasks.\n\nUpdating tasks will make the user experience more convenient.\n","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":4}}},{"hash":"1fdbe57f6cb8a07228f790e722431f4cd2009369","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-C-Update\u0027","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-22","commitResults":[{"hash":"85078a028dcb7311a73ccddae41062fa2a420116","isMergeCommit":false,"messageTitle":"Add more unit tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":540,"deletions":14}}},{"hash":"fbac803154bb670f2f81e273edef89ab8d430dbb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreTesting\u0027","messageBody":"","tags":["A-MoreTesting"],"fileTypesAndContributionMap":{}},{"hash":"aa1458a4ac925d04773136c9dbb05c2b19d02959","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-MoreErrorHandling","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-23","commitResults":[{"hash":"b9d8eb47d83cafb7fab88f6f3321037e6e344e3b","isMergeCommit":false,"messageTitle":"Fix bugs that caused some tests to fail","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":251,"deletions":94}}}]},{"date":"2023-09-24","commitResults":[{"hash":"c5590245b8568d4a19d68d0ddb5a6b65e8c4b016","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":22}}},{"hash":"f88202a95d59f5cf13251f7d5a987b6ea60e663d","isMergeCommit":false,"messageTitle":"Fix bug with invalid dates","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":22}}},{"hash":"8dbb859b9b1331f0afa639b9beffd502aa5cb6ef","isMergeCommit":false,"messageTitle":"Refactor parse into separate parse methods for each command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":199,"deletions":70}}},{"hash":"6f48c7c8b251a09a0ae5025c83e1f9414d1e3a43","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreErrorHandling\u0027","messageBody":"","tags":["A-MoreErrorHandling"],"fileTypesAndContributionMap":{}},{"hash":"ba9a8cbe3eb711f84173783b869a48d050179226","isMergeCommit":false,"messageTitle":"Fix GUI not showing long dialogs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"e8015db90fe0187cc3225a4f78d212fa1ea426b0","isMergeCommit":false,"messageTitle":"Modify GUI to send user input with enter key","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"87924df2a9bb205cf910eb6ebc3a270de31c8606","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-BetterGui\u0027","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{}},{"hash":"dacc5456f043a00708672550620d1b31972ad64c","isMergeCommit":false,"messageTitle":"Add canWeFixIt()","messageBody":"","tags":["A-Personality"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"0107242904e6dd2e385d9ce3ff136048bef9d8a8","isMergeCommit":false,"messageTitle":"Add title to GUI window","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"672498d00d406420f1d5206af5ff3a73139c3a83","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":104,"deletions":15}}},{"hash":"7b1ae2f5b0c2d302637454db4ab029161843e060","isMergeCommit":false,"messageTitle":"Fix README formatting","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"7c19599b0f0c77ae120b467a61a677e996f68f57","isMergeCommit":false,"messageTitle":"Fix README formatting","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":37,"deletions":37}}},{"hash":"102c6d23281f4efbb7274e24771d7930dfa33674","isMergeCommit":false,"messageTitle":"Fix formatting in README","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"rayyan35p":{"java":2160,"md":104,"fxml":48,"sh":0,"bat":0,"gradle":22,"txt":23}},"authorContributionVariance":{"rayyan35p":39820.25},"authorDisplayNameMap":{"rayyan35p":"CS2103T-T08-3 RAYY..MAIL"}} +{"authorDailyContributionsMap":{"rayyan35p":[{"date":"2023-08-20","commitResults":[{"hash":"50891bd022c5a5fa06656a9757f4aa62f4910adf","isMergeCommit":false,"messageTitle":"Replace initial code with new skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"c9e96866874dc97cdfdab8f0410219c3313d0986","isMergeCommit":false,"messageTitle":"Modify chatbot to echo user commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"5e321267466296aca46995eb62123db630e0b3a0","isMergeCommit":false,"messageTitle":"Add ability to store tasks in a list and print the list","messageBody":"","tags":["Level-2","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}}]},{"date":"2023-08-21","commitResults":[{"hash":"4d7212e3f57d5133d3f753009342549ab2d679a7","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"89bd671db9e3737ec25f2299349181790cb55ea9","isMergeCommit":false,"messageTitle":"Update Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"1cd7e16c24e9162bff163c6f870e165359367160","isMergeCommit":false,"messageTitle":"Add TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"cbc3c8be50e99d209df635fc4752a3484a9bffbe","isMergeCommit":false,"messageTitle":"Integrate Task and TaskList into main code","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":7}}},{"hash":"5df1c0e4d38206529278f67d7a2ac8b9f458a851","isMergeCommit":false,"messageTitle":"Add Deadline, Event, ToDo classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"58631d71470d82ec2099e4a564a70560a29f6f42","isMergeCommit":false,"messageTitle":"Update TaskList class with print statements","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"d928fcbc1acec1d8b6b63285318bdf10583e6bcd","isMergeCommit":false,"messageTitle":"Integrate new task classes into main code","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":8}}},{"hash":"f555cca75ddb17e68392381abbb68765a1edd874","isMergeCommit":false,"messageTitle":"Remove redundant line","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"9bbe609962d15fad08f1e59357657e7452115f9f","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"2341a4d27de4a7ae092ccbc04c3b6ca42501d626","isMergeCommit":false,"messageTitle":"Add DukeException","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"5d7e5dc25b52e91c0982c8c024a28861177eb071","isMergeCommit":false,"messageTitle":"Modify main code to catch exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":36}}},{"hash":"21eb78729d14f11c332df99dcb8ee40ea93eaa2c","isMergeCommit":false,"messageTitle":"Add deleteTask method to TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"1810dcdb0e5a898516e8debbaa9d68b7d677bd7d","isMergeCommit":false,"messageTitle":"Modify main code to allow chatbot to delete tasks from list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"dc4caafd0924a5059c008936447b8a6b7fa97f3c","isMergeCommit":false,"messageTitle":"Add code to create a folder and file to store tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"464291f09411dd547e825a8098a3afbb029b337e","isMergeCommit":false,"messageTitle":"Update task classes with methods needed for I/O","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":1}}},{"hash":"096fc3b65d28850f485d81892ad4ab12de53f306","isMergeCommit":false,"messageTitle":"Update TaskList class to write tasks to a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":0}}},{"hash":"c27c82966b54ed9736fd76a80af86e6bc569c52e","isMergeCommit":false,"messageTitle":"Integrate file writing operations into main","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"183caa34e15cf03ce3c62e1c6742d125f4c4a3ce","isMergeCommit":false,"messageTitle":"Modify main code to read previously stored tasks from a file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"9659b1d04c19cdb5d4f4e88e062c178c46b1f8aa","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-31","commitResults":[{"hash":"44cac1b77de81a764e7057f5d7ef31f37067925b","isMergeCommit":false,"messageTitle":"Fix bug where directory to store tasks is not made","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"283fa328b1d8c4521afcc5129231e86d58e34875","isMergeCommit":false,"messageTitle":"Add LocalDateTime functionality to task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":7}}},{"hash":"7581beba0eb14609865e9cea41277632eaa4953d","isMergeCommit":false,"messageTitle":"Update LocalDateTime functionality in task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":10}}},{"hash":"38331b41b1f4a3e828a1b143acc832962a59a701","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"b5c94ef67ab951b00b2bae3e9ad744010fc80e5c","isMergeCommit":false,"messageTitle":"Add Storage class for handling file operations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"6b4b33aa513ce3173f40e8b92c02474ef986323b","isMergeCommit":false,"messageTitle":"Integrate Storage class in main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":14}}}]},{"date":"2023-09-01","commitResults":[{"hash":"469142bf47c138eee21397ef2f0744991d188f66","isMergeCommit":false,"messageTitle":"Add Parser Class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":95,"deletions":0}}},{"hash":"dac578dbb8e60bc1f834a5a0c3990fcf3db01a71","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"ef368b10df273e5bfbca8f1800e6b4ed2b6e6cc8","isMergeCommit":false,"messageTitle":"Add new methods to TaskList class for executing commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":0}}},{"hash":"a09276750677fd66c84c21d513b08abd16f44b49","isMergeCommit":false,"messageTitle":"Integrate Parser class into main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":67}}},{"hash":"873f5083390ce11356120a71db1025718d1b4014","isMergeCommit":false,"messageTitle":"Add Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"fc15aa6ec3755e9f6667e4984904664c713948be","isMergeCommit":false,"messageTitle":"Integrate Ui class into main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"87c4caaab81b90f203f16d7bb92dad045f62219c","isMergeCommit":false,"messageTitle":"Update input.txt with correct datetime format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2}}},{"hash":"924ccfc53cba196bdf80fa7f36064b71e3037287","isMergeCommit":false,"messageTitle":"Add new method to Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"52f069f193417e151e983d65925003519eea4acc","isMergeCommit":false,"messageTitle":"Implement Ui.bye() for bye command in main code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c368c2ef25a5d4ba7f32efbd1c2875fe18768ee3","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":11}}},{"hash":"f13abdc2eed9ba3864bc910166fab622fefe072c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"1199b3ea53780157ff47de11275c0d12408394e5","isMergeCommit":false,"messageTitle":"Put classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":13}}},{"hash":"d272d29071428abfe3d8670755a7440f6cdb63a6","isMergeCommit":false,"messageTitle":"Modify expected output to match new input text for tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}},{"hash":"9402a3ed1990117a7d5f9ab784d8bfe4ecff474e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"153998f915071d5e72b7924d30e7da5633a05115","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a59aa171d91dcd78fb028a04c7da3fbc2eb5263d","isMergeCommit":false,"messageTitle":"Set mainClassName to be Duke","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-02","commitResults":[{"hash":"e45233f4449c31c23e94348487aac961ac364627","isMergeCommit":false,"messageTitle":"Add new method open() for reading file into TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}}]},{"date":"2023-09-03","commitResults":[{"hash":"65574828b2cb336bb18a05f037604b89a22be5de","isMergeCommit":false,"messageTitle":"Update error message for FileNotFoundException in open()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"ffefbf56f3ff6f4d17ac40ef443a8ca8a745fb65","isMergeCommit":false,"messageTitle":"Add JUnit test for Task classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":139,"deletions":0}}},{"hash":"37d9b17625270062cae8782d1e7c2f349bbb1e9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-JUnit\u0027","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"680b6a2c52cb60392da578a000fbe7024b520756","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":219,"deletions":1}}},{"hash":"cd5ea13272445a2dc853c29d363ee1e7ea5799fc","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":34}}},{"hash":"51dcb8ce89442b7091c89b75a1adc227a60f51a2","isMergeCommit":false,"messageTitle":"Add print method to Ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"ccb6235a0559eda3083124b1e90856ab1ae248a0","isMergeCommit":false,"messageTitle":"Modify methods in TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"0c8cfd1727de7160d73d21a6422eaa4a71f1d73c","isMergeCommit":false,"messageTitle":"Add find feature to main code with its relevant methods in the classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":1}}},{"hash":"4152fadca8587dede5c4d93616f8a4e5c44898ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"01181eedeca69bc0331b01cd63427553a6dd69af","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/data/task/TaskList.java\n","fileTypesAndContributionMap":{}},{"hash":"74cf6307f6fd669c288e86c3932482a7f57ec068","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/data/exception/DukeException.java\n#\tsrc/main/java/data/task/TaskList.java\n#\tsrc/main/java/ui/Ui.java\n","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"78049bc6e370c3b8c6d4bb77d0e531b18d13f99d","isMergeCommit":false,"messageTitle":"Fix variable names","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":7}}}]},{"date":"2023-09-08","commitResults":[{"hash":"b24d29f2d4a02c68eae4f43875a04b7264365c5e","isMergeCommit":false,"messageTitle":"Add JavaFX dependencies to build.gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0}}}]},{"date":"2023-09-09","commitResults":[{"hash":"e34a2ac38c376dde54b95ce027fc82a76785bc52","isMergeCommit":false,"messageTitle":"Move all files into bob package","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":33,"deletions":31},"md":{"insertions":1,"deletions":1}}},{"hash":"d256d20f3410717d3e683e9827352310376f115d","isMergeCommit":false,"messageTitle":"Add GUI elements","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":168,"deletions":0}}},{"hash":"d0cbeb96d58478d7fb529604fdb7bd0d36bf5534","isMergeCommit":false,"messageTitle":"Add changes to GUI","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":19,"deletions":4},"java":{"insertions":4,"deletions":3}}},{"hash":"1d79bdbbc1e2e216b5dac74df6f60c76eec532c4","isMergeCommit":false,"messageTitle":"Integrate commands into GUI","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":2,"deletions":2},"java":{"insertions":69,"deletions":33}}},{"hash":"a4de971397fa8bb05858c7f7145f0507a11d5dd7","isMergeCommit":false,"messageTitle":"Modify GUI to close on bye command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"7e632294fc92d2dce863fff773b221746c41e8a5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-GUI\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}},{"hash":"d3c4e1afaa7ad6da75b511dad8863f52c0e2ff7e","isMergeCommit":false,"messageTitle":"Add checkstyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":11,"deletions":11}}}]},{"date":"2023-09-15","commitResults":[{"hash":"ad3fa66545b0bdf4c82fc1c139fcb726bbd7e45e","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":0,"deletions":2},"java":{"insertions":90,"deletions":61}}},{"hash":"92fd1b09bba3ec67c783a35f30b56c38f140ab04","isMergeCommit":false,"messageTitle":"Remove deep nesting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":30}}},{"hash":"5b5cc296a3d685a30aea5138bbda69b3109ed8f9","isMergeCommit":false,"messageTitle":"Add Command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":0}}}]},{"date":"2023-09-17","commitResults":[{"hash":"5393057596b1d62d3b9c38f9f302a13f50bcc4e6","isMergeCommit":false,"messageTitle":"Move logic of commands into individual Command classes","messageBody":"Execution of commands is being done by TaskList class instead of\ncommand classes.\n\nIt may be difficult to ascertain any bugs with Command logic or TaskList\nlogic if they are not separated.\n\nThe logic of commands being executed will be handled by the command\nclasses instead of the TaskList class so TaskList will only have methods\nrelevant to the TaskList.\n\nWith proper separation of behaviors into relevant classes, the code will\nbe clearer.\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":179,"deletions":218}}},{"hash":"769f63abcb995c3527afe74c3d320b4af3efbf4d","isMergeCommit":false,"messageTitle":"Add Javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":0}}},{"hash":"a316715177f1ab4fde940b670a92b2b29d1a8087","isMergeCommit":false,"messageTitle":"Remove redundant lines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":116}}},{"hash":"573a0763ac5cf08a827cef653cb738313d9dab23","isMergeCommit":false,"messageTitle":"Add assertions","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":19,"deletions":0}}},{"hash":"dd52708b944e4b4776b5adec484ce7df7ef7b982","isMergeCommit":true,"messageTitle":"Merge pull request #2 from rayyan35p/branch-A-Assertions","messageBody":"Add assertions","tags":["A-Assertions"],"fileTypesAndContributionMap":{}},{"hash":"726f0ff2030788bf80d30866769b0750f79d069e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-CodeQuality","messageBody":"# Conflicts:\n#\tsrc/main/java/bob/data/task/TaskList.java\n#\tsrc/main/java/bob/parser/Parser.java\n","fileTypesAndContributionMap":{}},{"hash":"7817dc21e8d0576373c77e22b50f56b5f88b9a6e","isMergeCommit":true,"messageTitle":"Merge pull request #3 from rayyan35p/branch-A-CodeQuality","messageBody":"Merge Code Quality Branch","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{}},{"hash":"645be8ea0b76b4a07d32e2c191c39f531e5bc6ac","isMergeCommit":false,"messageTitle":"Add ability to update tasks in the list","messageBody":"Not able to update the details of tasks.\n\nUsers will have to delete tasks and re-add them back with the correct\ndetails in order to \"update\" them.\n\nLet\u0027s make a new UpdateCommand to facilitate updating tasks.\n\nUpdating tasks will make the user experience more convenient.\n","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":4}}},{"hash":"1fdbe57f6cb8a07228f790e722431f4cd2009369","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-C-Update\u0027","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-22","commitResults":[{"hash":"85078a028dcb7311a73ccddae41062fa2a420116","isMergeCommit":false,"messageTitle":"Add more unit tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":540,"deletions":14}}},{"hash":"fbac803154bb670f2f81e273edef89ab8d430dbb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreTesting\u0027","messageBody":"","tags":["A-MoreTesting"],"fileTypesAndContributionMap":{}},{"hash":"aa1458a4ac925d04773136c9dbb05c2b19d02959","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-MoreErrorHandling","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-23","commitResults":[{"hash":"b9d8eb47d83cafb7fab88f6f3321037e6e344e3b","isMergeCommit":false,"messageTitle":"Fix bugs that caused some tests to fail","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":251,"deletions":94}}}]},{"date":"2023-09-24","commitResults":[{"hash":"c5590245b8568d4a19d68d0ddb5a6b65e8c4b016","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":22}}},{"hash":"f88202a95d59f5cf13251f7d5a987b6ea60e663d","isMergeCommit":false,"messageTitle":"Fix bug with invalid dates","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":22}}},{"hash":"8dbb859b9b1331f0afa639b9beffd502aa5cb6ef","isMergeCommit":false,"messageTitle":"Refactor parse into separate parse methods for each command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":199,"deletions":70}}},{"hash":"6f48c7c8b251a09a0ae5025c83e1f9414d1e3a43","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreErrorHandling\u0027","messageBody":"","tags":["A-MoreErrorHandling"],"fileTypesAndContributionMap":{}},{"hash":"ba9a8cbe3eb711f84173783b869a48d050179226","isMergeCommit":false,"messageTitle":"Fix GUI not showing long dialogs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"e8015db90fe0187cc3225a4f78d212fa1ea426b0","isMergeCommit":false,"messageTitle":"Modify GUI to send user input with enter key","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"87924df2a9bb205cf910eb6ebc3a270de31c8606","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-BetterGui\u0027","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{}},{"hash":"dacc5456f043a00708672550620d1b31972ad64c","isMergeCommit":false,"messageTitle":"Add canWeFixIt()","messageBody":"","tags":["A-Personality"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"0107242904e6dd2e385d9ce3ff136048bef9d8a8","isMergeCommit":false,"messageTitle":"Add title to GUI window","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"672498d00d406420f1d5206af5ff3a73139c3a83","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":104,"deletions":15}}},{"hash":"7b1ae2f5b0c2d302637454db4ab029161843e060","isMergeCommit":false,"messageTitle":"Fix README formatting","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"7c19599b0f0c77ae120b467a61a677e996f68f57","isMergeCommit":false,"messageTitle":"Fix README formatting","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":37,"deletions":37}}},{"hash":"102c6d23281f4efbb7274e24771d7930dfa33674","isMergeCommit":false,"messageTitle":"Fix formatting in README","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-26","commitResults":[{"hash":"68709a082b8f943903888a50262318f48506bb1d","isMergeCommit":false,"messageTitle":"Fix minor issues","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":32}}}]}]},"authorFileTypeContributionMap":{"rayyan35p":{"java":2131,"md":104,"fxml":48,"sh":0,"bat":0,"gradle":22,"txt":23}},"authorContributionVariance":{"rayyan35p":38309.6},"authorDisplayNameMap":{"rayyan35p":"CS2103T-T08-3 RAYY..MAIL"}} diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index f93c71f5..842eeb9b 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,66 +1,66 @@ -Sep 26, 2023 4:02:53 AM reposense.system.LogsManager addFileHandler +Sep 26, 2023 2:06:05 PM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Sep 26, 2023 4:02:53 AM reposense.parser.CsvParser validateHeader +Sep 26, 2023 2:06:05 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Sep 26, 2023 4:02:55 AM reposense.parser.CsvParser validateHeader +Sep 26, 2023 2:06:07 PM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias scarletblanks found. The alias will belong to the last author - ScarletBlanks -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kb-tay found. The alias will belong to the last author - Kb-Tay -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ryam found. The alias will belong to the last author - ryamgoh -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jason found. The alias will belong to the last author - jason-raiin -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias h1410101 found. The alias will belong to the last author - H1410101 -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shashahchk found. The alias will belong to the last author - shashahchk -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yucongkoo found. The alias will belong to the last author - yucongkoo -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kokseng1 found. The alias will belong to the last author - Kokseng1 -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias vanessamae23 found. The alias will belong to the last author - Vanessamae23 -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias singa-pirate found. The alias will belong to the last author - Singa-pirate -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kurt found. The alias will belong to the last author - Kurtyjlee -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nicholastng010601 found. The alias will belong to the last author - nicholastng010601 -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias weiennn found. The alias will belong to the last author - Weiennn -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias adammangzijun found. The alias will belong to the last author - adammangzijun -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias scarletblanks found. The alias will belong to the last author - ScarletBlanks -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kb-tay found. The alias will belong to the last author - Kb-Tay -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ryam found. The alias will belong to the last author - ryamgoh -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jason found. The alias will belong to the last author - jason-raiin -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias h1410101 found. The alias will belong to the last author - H1410101 -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shashahchk found. The alias will belong to the last author - shashahchk -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yucongkoo found. The alias will belong to the last author - yucongkoo -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kokseng1 found. The alias will belong to the last author - Kokseng1 -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias vanessamae23 found. The alias will belong to the last author - Vanessamae23 -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias singa-pirate found. The alias will belong to the last author - Singa-pirate -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kurt found. The alias will belong to the last author - Kurtyjlee -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nicholastng010601 found. The alias will belong to the last author - nicholastng010601 -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias weiennn found. The alias will belong to the last author - Weiennn -Sep 26, 2023 4:02:55 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Sep 26, 2023 2:06:07 PM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias adammangzijun found. The alias will belong to the last author - adammangzijun -Sep 26, 2023 4:02:55 AM reposense.git.GitConfig getGlobalGitLfsConfig +Sep 26, 2023 2:06:07 PM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -76,8611 +76,8611 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/emzm2023/ip.git... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/siqirua/ip.git... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CJ-Lee01/ip.git... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:07 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/siqirua/ip.git... +Sep 26, 2023 2:06:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thaddeusong/ip.git... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/thaddeusong/ip.git to complete... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/emzm2023/ip.git to complete... +Sep 26, 2023 2:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/CJ-Lee01/ip.git to complete... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/siqirua/ip.git to complete... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/emzm2023/ip.git to complete... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/siqirua/ip.git completed! -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanteckfang/ip.git... -Sep 26, 2023 4:02:55 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:06:08 PM reposense.report.ReportGenerator analyzeRepos INFO: [1/478] Analyzing https://github.com/siqirua/ip.git (master)... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanteckfang/ip.git to complete... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/thaddeusong/ip.git completed! -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/CJ-Lee01/ip.git completed! +Sep 26, 2023 2:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ph-nathan/ip.git... -Sep 26, 2023 4:02:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [2/478] Analyzing https://github.com/thaddeusong/ip.git (master)... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [2/478] Analyzing https://github.com/CJ-Lee01/ip.git (master)... +Sep 26, 2023 2:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ph-nathan/ip.git to complete... -Sep 26, 2023 4:02:55 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:06:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/thaddeusong/ip.git completed! +Sep 26, 2023 2:06:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/siqirua/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/CJ-Lee01/ip.git completed! -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/butteredyakiimo/ip.git... -Sep 26, 2023 4:02:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/thaddeusong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:02:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:06:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/siqirua/ip.git (master)... -Sep 26, 2023 4:02:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/thaddeusong/ip.git (master)... -Sep 26, 2023 4:02:55 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/butteredyakiimo/ip.git to complete... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/CJ-Lee01/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/CJ-Lee01/ip.git (master)... +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/emzm2023/ip.git completed! +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/butteredyakiimo/ip.git completed! +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanteckfang/ip.git completed! -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ph-nathan/ip.git completed! -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yuxunn/ip.git... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RB9823/ip.git... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ph-nathan/ip.git completed! +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yuxunn/ip.git to complete... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RB9823/ip.git to complete... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/butteredyakiimo/ip.git completed! -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RB9823/ip.git... +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TyrusLye/ip.git... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TyrusLye/ip.git to complete... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RB9823/ip.git completed! -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RB9823/ip.git to complete... +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cxo05/ip.git... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yuxunn/ip.git completed! -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cxo05/ip.git to complete... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TyrusLye/ip.git to complete... +Sep 26, 2023 2:06:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/CJ-Lee01/ip.git (master)... +Sep 26, 2023 2:06:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/CJ-Lee01/ip.git (master)... +Sep 26, 2023 2:06:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/siqirua/ip.git (master)... +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yuxunn/ip.git completed! +Sep 26, 2023 2:06:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CJ-Lee01/ip.git (master) completed! +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shyanyong/ip.git... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [3/478] Analyzing https://github.com/thaddeusong/ip.git (master)... +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shyanyong/ip.git to complete... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/emzm2023/ip.git completed! -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TyrusLye/ip.git completed! -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cxo05/ip.git completed! +Sep 26, 2023 2:06:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/siqirua/ip.git (master)... +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/howenc/ip.git... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kurtyjlee/ip.git... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/howenc/ip.git to complete... -Sep 26, 2023 4:02:56 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kurtyjlee/ip.git to complete... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cxo05/ip.git completed! -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/howenc/ip.git to complete... +Sep 26, 2023 2:06:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/thaddeusong/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/thaddeusong/ip.git (master)... +Sep 26, 2023 2:06:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/siqirua/ip.git (master) completed! +Sep 26, 2023 2:06:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [4/478] Analyzing https://github.com/emzm2023/ip.git (master)... +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RB9823/ip.git completed! +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/josepholim/ip.git... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/emzm2023/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/emzm2023/ip.git (master)... +Sep 26, 2023 2:06:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/josepholim/ip.git to complete... -Sep 26, 2023 4:02:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/thaddeusong/ip.git (master)... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shyanyong/ip.git completed! -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/geoffong11/ip.git... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/geoffong11/ip.git to complete... -Sep 26, 2023 4:02:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/thaddeusong/ip.git (master)... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/howenc/ip.git completed! -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jianrong7/ip.git... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Kurtyjlee/ip.git completed! -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/A1WAYSD/ip.git... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jianrong7/ip.git... +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jianrong7/ip.git to complete... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/thaddeusong/ip.git (master)... +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/howenc/ip.git completed! +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/A1WAYSD/ip.git... +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/A1WAYSD/ip.git to complete... -Sep 26, 2023 4:02:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/siqirua/ip.git (master)... -Sep 26, 2023 4:02:57 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:06:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/thaddeusong/ip.git (master)... +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/josepholim/ip.git completed! +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/NgChunMan/ip.git... +Sep 26, 2023 2:06:11 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/thaddeusong/ip.git (master) completed! -Sep 26, 2023 4:02:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [3/478] Analyzing https://github.com/CJ-Lee01/ip.git (master)... -Sep 26, 2023 4:02:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/siqirua/ip.git (master)... -Sep 26, 2023 4:02:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/CJ-Lee01/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:02:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/CJ-Lee01/ip.git (master)... -Sep 26, 2023 4:02:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/siqirua/ip.git (master) completed! -Sep 26, 2023 4:02:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [4/478] Analyzing https://github.com/tanteckfang/ip.git (master)... -Sep 26, 2023 4:02:57 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:06:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [5/478] Analyzing https://github.com/tanteckfang/ip.git (master)... +Sep 26, 2023 2:06:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/NgChunMan/ip.git to complete... +Sep 26, 2023 2:06:12 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanteckfang/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:02:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:06:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanteckfang/ip.git (master)... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/geoffong11/ip.git completed! -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/josepholim/ip.git completed! -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/NgChunMan/ip.git... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/emzm2023/ip.git (master)... +Sep 26, 2023 2:06:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/emzm2023/ip.git (master)... +Sep 26, 2023 2:06:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/emzm2023/ip.git (master) completed! +Sep 26, 2023 2:06:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [6/478] Analyzing https://github.com/butteredyakiimo/ip.git (master)... +Sep 26, 2023 2:06:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/butteredyakiimo/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/butteredyakiimo/ip.git (master)... +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jianrong7/ip.git completed! +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/limjunxian1/ip.git... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/NgChunMan/ip.git to complete... -Sep 26, 2023 4:02:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/limjunxian1/ip.git to complete... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/A1WAYSD/ip.git completed! -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jianrong7/ip.git completed! -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/limjunxian1/ip.git to complete... +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jack1e0/ip.git... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jack1e0/ip.git to complete... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NgChunMan/ip.git completed! +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/hjoneweek/ip.git... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/hjoneweek/ip.git to complete... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NgChunMan/ip.git completed! -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/geoffong11/ip.git completed! +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dishenggg/ip.git... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/limjunxian1/ip.git completed! -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dishenggg/ip.git to complete... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanteckfang/ip.git (master)... +Sep 26, 2023 2:06:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanteckfang/ip.git (master)... +Sep 26, 2023 2:06:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanteckfang/ip.git (master) completed! +Sep 26, 2023 2:06:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [7/478] Analyzing https://github.com/ph-nathan/ip.git (master)... +Sep 26, 2023 2:06:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ph-nathan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ph-nathan/ip.git (master)... +Sep 26, 2023 2:06:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/butteredyakiimo/ip.git (master)... +Sep 26, 2023 2:06:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/butteredyakiimo/ip.git (master)... +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/limjunxian1/ip.git completed! +Sep 26, 2023 2:06:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/butteredyakiimo/ip.git (master) completed! +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhyuhan/ip.git... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jack1e0/ip.git completed! -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [8/478] Analyzing https://github.com/yuxunn/ip.git (master)... +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhyuhan/ip.git to complete... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Dioclei/ip.git... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jack1e0/ip.git completed! +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/hjoneweek/ip.git completed! -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yuxunn/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yuxunn/ip.git (master)... +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dishenggg/ip.git completed! +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Dioclei/ip.git... +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Daphne789/ip.git... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Dioclei/ip.git to complete... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Daphne789/ip.git to complete... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dishenggg/ip.git completed! -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WinstonLeonard/ip.git... -Sep 26, 2023 4:02:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/CJ-Lee01/ip.git (master)... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Daphne789/ip.git to complete... +Sep 26, 2023 2:06:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WinstonLeonard/ip.git to complete... -Sep 26, 2023 4:02:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/CJ-Lee01/ip.git (master)... -Sep 26, 2023 4:02:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CJ-Lee01/ip.git (master) completed! -Sep 26, 2023 4:02:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/478] Analyzing https://github.com/ph-nathan/ip.git (master)... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ph-nathan/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ph-nathan/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ph-nathan/ip.git (master) completed! +Sep 26, 2023 2:06:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [9/478] Analyzing https://github.com/cxo05/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cxo05/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cxo05/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yuxunn/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yuxunn/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yuxunn/ip.git (master) completed! +Sep 26, 2023 2:06:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [10/478] Analyzing https://github.com/TyrusLye/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TyrusLye/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TyrusLye/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zhyuhan/ip.git completed! -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/peiran18/ip.git... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/peiran18/ip.git to complete... -Sep 26, 2023 4:02:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ph-nathan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:02:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ph-nathan/ip.git (master)... -Sep 26, 2023 4:02:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Dioclei/ip.git completed! -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AriellaCallista/ip.git... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AriellaCallista/ip.git to complete... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Daphne789/ip.git completed! -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AriellaCallista/ip.git... +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Dioclei/ip.git completed! +Sep 26, 2023 2:06:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TyrusLye/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WinstonLeonard/ip.git completed! +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/migfoo02/ip.git... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AriellaCallista/ip.git to complete... +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/migfoo02/ip.git to complete... -Sep 26, 2023 4:02:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanteckfang/ip.git (master)... -Sep 26, 2023 4:02:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanteckfang/ip.git (master)... -Sep 26, 2023 4:02:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanteckfang/ip.git (master) completed! -Sep 26, 2023 4:02:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/478] Analyzing https://github.com/butteredyakiimo/ip.git (master)... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WinstonLeonard/ip.git completed! -Sep 26, 2023 4:02:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/butteredyakiimo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:02:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/butteredyakiimo/ip.git (master)... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jonyxzx/ip.git... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:14 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jonyxzx/ip.git to complete... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TyrusLye/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TyrusLye/ip.git (master) completed! +Sep 26, 2023 2:06:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [11/478] Analyzing https://github.com/RB9823/ip.git (master)... +Sep 26, 2023 2:06:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RB9823/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RB9823/ip.git (master)... +Sep 26, 2023 2:06:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cxo05/ip.git (master)... +Sep 26, 2023 2:06:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cxo05/ip.git (master)... +Sep 26, 2023 2:06:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cxo05/ip.git (master) completed! +Sep 26, 2023 2:06:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [12/478] Analyzing https://github.com/shyanyong/ip.git (master)... +Sep 26, 2023 2:06:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shyanyong/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shyanyong/ip.git (master)... +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/peiran18/ip.git completed! -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SynapseProgramming/ip.git... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/migfoo02/ip.git completed! -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SynapseProgramming/ip.git to complete... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jonyxzx/ip.git completed! +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Darren159/ip.git... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AriellaCallista/ip.git completed! -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Darren159/ip.git to complete... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/imkwokyong/ip.git... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Darren159/ip.git to complete... +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/imkwokyong/ip.git to complete... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jonyxzx/ip.git completed! -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/migfoo02/ip.git completed! +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/joeng03/ip.git... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:15 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/joeng03/ip.git to complete... -Sep 26, 2023 4:02:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ph-nathan/ip.git (master)... -Sep 26, 2023 4:02:59 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RB9823/ip.git (master)... +Sep 26, 2023 2:06:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RB9823/ip.git (master)... +Sep 26, 2023 2:06:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RB9823/ip.git (master) completed! +Sep 26, 2023 2:06:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [13/478] Analyzing https://github.com/Kurtyjlee/ip.git (master)... +Sep 26, 2023 2:06:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kurtyjlee/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kurtyjlee/ip.git (master)... +Sep 26, 2023 2:06:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shyanyong/ip.git (master)... +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SynapseProgramming/ip.git completed! -Sep 26, 2023 4:02:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ph-nathan/ip.git (master)... -Sep 26, 2023 4:03:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ph-nathan/ip.git (master) completed! -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vijay-shankaranand/ip.git... -Sep 26, 2023 4:03:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/478] Analyzing https://github.com/RB9823/ip.git (master)... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vijay-shankaranand/ip.git to complete... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shyanyong/ip.git (master)... +Sep 26, 2023 2:06:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shyanyong/ip.git (master) completed! +Sep 26, 2023 2:06:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [14/478] Analyzing https://github.com/howenc/ip.git (master)... +Sep 26, 2023 2:06:16 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/howenc/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/howenc/ip.git (master)... +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Darren159/ip.git completed! -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/imkwokyong/ip.git completed! -Sep 26, 2023 4:03:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RB9823/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RB9823/ip.git (master)... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SelwynAng/ip.git... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/joeng03/ip.git completed! +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SelwynAng/ip.git to complete... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jeffrey-jian/ip.git... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jeffrey-jian/ip.git to complete... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/joeng03/ip.git completed! -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/imkwokyong/ip.git completed! +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanyyyming/ip.git... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jeffrey-jian/ip.git to complete... +Sep 26, 2023 2:06:16 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanyyyming/ip.git to complete... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kurtyjlee/ip.git (master)... +Sep 26, 2023 2:06:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kurtyjlee/ip.git (master)... +Sep 26, 2023 2:06:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kurtyjlee/ip.git (master) completed! +Sep 26, 2023 2:06:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [15/478] Analyzing https://github.com/josepholim/ip.git (master)... +Sep 26, 2023 2:06:16 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/josepholim/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/josepholim/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/vijay-shankaranand/ip.git completed! -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JCSnap/ip.git... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/howenc/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JCSnap/ip.git to complete... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/howenc/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/howenc/ip.git (master) completed! +Sep 26, 2023 2:06:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [16/478] Analyzing https://github.com/jianrong7/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jianrong7/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jianrong7/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SelwynAng/ip.git completed! -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AprupKale/ip.git... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AprupKale/ip.git to complete... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jeffrey-jian/ip.git completed! -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AprupKale/ip.git to complete... +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/woojiahao/ip.git... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanyyyming/ip.git completed! -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/woojiahao/ip.git to complete... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanyyyming/ip.git completed! +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/PetrichorPrecipice/ip.git... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/PetrichorPrecipice/ip.git to complete... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/josepholim/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JCSnap/ip.git completed! -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/syamfarh/ip.git... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jianrong7/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/syamfarh/ip.git to complete... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/josepholim/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jianrong7/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jianrong7/ip.git (master) completed! +Sep 26, 2023 2:06:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/josepholim/ip.git (master) completed! +Sep 26, 2023 2:06:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [17/478] Analyzing https://github.com/A1WAYSD/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [18/478] Analyzing https://github.com/NgChunMan/ip.git (master)... +Sep 26, 2023 2:06:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NgChunMan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NgChunMan/ip.git (master)... +Sep 26, 2023 2:06:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/A1WAYSD/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/A1WAYSD/ip.git (master)... +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AprupKale/ip.git completed! -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/D-Limiter/ip.git... -Sep 26, 2023 4:03:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/butteredyakiimo/ip.git (master)... -Sep 26, 2023 4:03:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/D-Limiter/ip.git to complete... -Sep 26, 2023 4:03:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/butteredyakiimo/ip.git (master)... -Sep 26, 2023 4:03:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/butteredyakiimo/ip.git (master) completed! -Sep 26, 2023 4:03:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/478] Analyzing https://github.com/yuxunn/ip.git (master)... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/PetrichorPrecipice/ip.git completed! -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/coderhuang559/ip.git... -Sep 26, 2023 4:03:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RB9823/ip.git (master)... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/woojiahao/ip.git completed! -Sep 26, 2023 4:03:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yuxunn/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yuxunn/ip.git (master)... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/D-Limiter/ip.git to complete... +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/coderhuang559/ip.git to complete... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/syamfarh/ip.git completed! -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/woojiahao/ip.git completed! +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LINCHENYU2030S/ip.git... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/pra-navi/ip.git... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LINCHENYU2030S/ip.git to complete... -Sep 26, 2023 4:03:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RB9823/ip.git (master)... -Sep 26, 2023 4:03:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RB9823/ip.git (master) completed! -Sep 26, 2023 4:03:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [9/478] Analyzing https://github.com/emzm2023/ip.git (master)... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/A1WAYSD/ip.git (master)... +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/syamfarh/ip.git completed! +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/pra-navi/ip.git... +Sep 26, 2023 2:06:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/A1WAYSD/ip.git (master)... +Sep 26, 2023 2:06:18 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/pra-navi/ip.git to complete... -Sep 26, 2023 4:03:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/emzm2023/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/emzm2023/ip.git (master)... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/A1WAYSD/ip.git (master) completed! +Sep 26, 2023 2:06:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [19/478] Analyzing https://github.com/geoffong11/ip.git (master)... +Sep 26, 2023 2:06:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/geoffong11/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/geoffong11/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/NgChunMan/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/D-Limiter/ip.git completed! -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/phiphi-tan/ip.git... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/NgChunMan/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LINCHENYU2030S/ip.git completed! +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/phiphi-tan/ip.git to complete... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/coderhuang559/ip.git completed! -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/NgChunMan/ip.git (master) completed! +Sep 26, 2023 2:06:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [20/478] Analyzing https://github.com/limjunxian1/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ktzy0305/ip.git... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LINCHENYU2030S/ip.git completed! -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ktzy0305/ip.git to complete... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/pra-navi/ip.git completed! -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LordSaumya/ip.git... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/limjunxian1/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/limjunxian1/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ktzy0305/ip.git to complete... +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LordSaumya/ip.git to complete... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/pra-navi/ip.git completed! +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Chen1x/ip.git... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/geoffong11/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Chen1x/ip.git to complete... -Sep 26, 2023 4:03:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yuxunn/ip.git (master)... -Sep 26, 2023 4:03:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yuxunn/ip.git (master)... -Sep 26, 2023 4:03:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yuxunn/ip.git (master) completed! -Sep 26, 2023 4:03:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/478] Analyzing https://github.com/TyrusLye/ip.git (master)... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/geoffong11/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/geoffong11/ip.git (master) completed! +Sep 26, 2023 2:06:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [21/478] Analyzing https://github.com/hjoneweek/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/hjoneweek/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/hjoneweek/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/limjunxian1/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/limjunxian1/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/limjunxian1/ip.git (master) completed! +Sep 26, 2023 2:06:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [22/478] Analyzing https://github.com/jack1e0/ip.git (master)... +Sep 26, 2023 2:06:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jack1e0/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jack1e0/ip.git (master)... +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/phiphi-tan/ip.git completed! -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yanghengtang/ip.git... -Sep 26, 2023 4:03:01 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hjoneweek/ip.git (master)... +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yanghengtang/ip.git to complete... -Sep 26, 2023 4:03:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TyrusLye/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TyrusLye/ip.git (master)... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LordSaumya/ip.git completed! -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hjoneweek/ip.git (master)... +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ktzy0305/ip.git completed! -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hjoneweek/ip.git (master) completed! +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/johnnythesnake12/ip.git... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chen1x/ip.git completed! -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [23/478] Analyzing https://github.com/dishenggg/ip.git (master)... +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/johnnythesnake12/ip.git to complete... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chen1x/ip.git completed! +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LordSaumya/ip.git completed! +Sep 26, 2023 2:06:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dishenggg/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dishenggg/ip.git (master)... +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/oeggy03/ip.git... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/p-xp/ip.git... -Sep 26, 2023 4:03:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/emzm2023/ip.git (master)... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/oeggy03/ip.git to complete... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/p-xp/ip.git to complete... -Sep 26, 2023 4:03:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/emzm2023/ip.git (master)... -Sep 26, 2023 4:03:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/emzm2023/ip.git (master) completed! -Sep 26, 2023 4:03:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TyrusLye/ip.git (master)... -Sep 26, 2023 4:03:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/478] Analyzing https://github.com/cxo05/ip.git (master)... -Sep 26, 2023 4:03:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TyrusLye/ip.git (master)... -Sep 26, 2023 4:03:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TyrusLye/ip.git (master) completed! -Sep 26, 2023 4:03:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [12/478] Analyzing https://github.com/shyanyong/ip.git (master)... -Sep 26, 2023 4:03:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cxo05/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cxo05/ip.git (master)... -Sep 26, 2023 4:03:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shyanyong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shyanyong/ip.git (master)... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jack1e0/ip.git (master)... +Sep 26, 2023 2:06:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jack1e0/ip.git (master)... +Sep 26, 2023 2:06:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jack1e0/ip.git (master) completed! +Sep 26, 2023 2:06:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [24/478] Analyzing https://github.com/zhyuhan/ip.git (master)... +Sep 26, 2023 2:06:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhyuhan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhyuhan/ip.git (master)... +Sep 26, 2023 2:06:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dishenggg/ip.git (master)... +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yanghengtang/ip.git completed! -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:20 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/matochichap/ip.git... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dishenggg/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/matochichap/ip.git to complete... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/p-xp/ip.git completed! -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/applepiofmyeye/ip.git... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/oeggy03/ip.git completed! -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/johnnythesnake12/ip.git completed! -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dishenggg/ip.git (master) completed! +Sep 26, 2023 2:06:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [25/478] Analyzing https://github.com/Daphne789/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/applepiofmyeye/ip.git... +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/applepiofmyeye/ip.git to complete... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/oeggy03/ip.git completed! +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/p-xp/ip.git completed! +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TiwKangXu/ip.git... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ScarletBlanks/ip.git... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TiwKangXu/ip.git to complete... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Daphne789/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Daphne789/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ScarletBlanks/ip.git to complete... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TiwKangXu/ip.git to complete... +Sep 26, 2023 2:06:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhyuhan/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhyuhan/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhyuhan/ip.git (master) completed! +Sep 26, 2023 2:06:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [26/478] Analyzing https://github.com/Dioclei/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Dioclei/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Dioclei/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Daphne789/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Daphne789/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Daphne789/ip.git (master) completed! +Sep 26, 2023 2:06:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [27/478] Analyzing https://github.com/WinstonLeonard/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/matochichap/ip.git completed! -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chiayunrong/ip.git... -Sep 26, 2023 4:03:02 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chiayunrong/ip.git to complete... -Sep 26, 2023 4:03:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shyanyong/ip.git (master)... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TiwKangXu/ip.git completed! -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ScarletBlanks/ip.git completed! -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WinstonLeonard/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WinstonLeonard/ip.git (master)... +Sep 26, 2023 2:06:21 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/devanshubisht/ip.git... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ScarletBlanks/ip.git completed! +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/devanshubisht/ip.git to complete... -Sep 26, 2023 4:03:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shyanyong/ip.git (master)... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jx124/ip.git... -Sep 26, 2023 4:03:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shyanyong/ip.git (master) completed! -Sep 26, 2023 4:03:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [13/478] Analyzing https://github.com/howenc/ip.git (master)... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jx124/ip.git to complete... -Sep 26, 2023 4:03:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cxo05/ip.git (master)... -Sep 26, 2023 4:03:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/howenc/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/howenc/ip.git (master)... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Dioclei/ip.git (master)... +Sep 26, 2023 2:06:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Dioclei/ip.git (master)... +Sep 26, 2023 2:06:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Dioclei/ip.git (master) completed! +Sep 26, 2023 2:06:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [28/478] Analyzing https://github.com/peiran18/ip.git (master)... +Sep 26, 2023 2:06:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/peiran18/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/peiran18/ip.git (master)... +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chiayunrong/ip.git completed! -Sep 26, 2023 4:03:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cxo05/ip.git (master)... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Clin-lyx/ip.git... -Sep 26, 2023 4:03:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cxo05/ip.git (master) completed! -Sep 26, 2023 4:03:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [14/478] Analyzing https://github.com/Kurtyjlee/ip.git (master)... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Clin-lyx/ip.git to complete... -Sep 26, 2023 4:03:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kurtyjlee/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kurtyjlee/ip.git (master)... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/devanshubisht/ip.git completed! -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AryanG01/ip.git... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AryanG01/ip.git to complete... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jx124/ip.git completed! -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AryanG01/ip.git... +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kayabuttertoastt/ip.git... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WinstonLeonard/ip.git (master)... +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AryanG01/ip.git to complete... +Sep 26, 2023 2:06:22 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kayabuttertoastt/ip.git to complete... -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Clin-lyx/ip.git completed! -Sep 26, 2023 4:03:03 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WinstonLeonard/ip.git (master)... +Sep 26, 2023 2:06:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WinstonLeonard/ip.git (master) completed! +Sep 26, 2023 2:06:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [29/478] Analyzing https://github.com/Jonyxzx/ip.git (master)... +Sep 26, 2023 2:06:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jonyxzx/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jonyxzx/ip.git (master)... +Sep 26, 2023 2:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/applepiofmyeye/ip.git completed! +Sep 26, 2023 2:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sheryew/ip.git... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sheryew/ip.git to complete... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/peiran18/ip.git (master)... +Sep 26, 2023 2:06:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/peiran18/ip.git (master)... +Sep 26, 2023 2:06:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/peiran18/ip.git (master) completed! +Sep 26, 2023 2:06:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [30/478] Analyzing https://github.com/AriellaCallista/ip.git (master)... +Sep 26, 2023 2:06:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AriellaCallista/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AriellaCallista/ip.git (master)... +Sep 26, 2023 2:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AryanG01/ip.git completed! -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jonasongg/ip.git... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jonasongg/ip.git to complete... +Sep 26, 2023 2:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kayabuttertoastt/ip.git completed! -Sep 26, 2023 4:03:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/howenc/ip.git (master)... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:23 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yiwen101/ip.git... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jonasongg/ip.git to complete... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yiwen101/ip.git to complete... -Sep 26, 2023 4:03:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/howenc/ip.git (master)... -Sep 26, 2023 4:03:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/howenc/ip.git (master) completed! -Sep 26, 2023 4:03:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [15/478] Analyzing https://github.com/geoffong11/ip.git (master)... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jonyxzx/ip.git (master)... +Sep 26, 2023 2:06:23 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sheryew/ip.git completed! -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tiongMax/ip.git... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jonyxzx/ip.git (master)... +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tiongMax/ip.git to complete... -Sep 26, 2023 4:03:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/geoffong11/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/geoffong11/ip.git (master)... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/applepiofmyeye/ip.git completed! -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jonyxzx/ip.git (master) completed! +Sep 26, 2023 2:06:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [31/478] Analyzing https://github.com/migfoo02/ip.git (master)... +Sep 26, 2023 2:06:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/migfoo02/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/migfoo02/ip.git (master)... +Sep 26, 2023 2:06:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AriellaCallista/ip.git (master)... +Sep 26, 2023 2:06:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AriellaCallista/ip.git (master)... +Sep 26, 2023 2:06:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AriellaCallista/ip.git (master) completed! +Sep 26, 2023 2:06:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [32/478] Analyzing https://github.com/SynapseProgramming/ip.git (master)... +Sep 26, 2023 2:06:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SynapseProgramming/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SynapseProgramming/ip.git (master)... +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jonasongg/ip.git completed! +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chuababyy/ip.git... -Sep 26, 2023 4:03:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kurtyjlee/ip.git (master)... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chuababyy/ip.git to complete... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jonasongg/ip.git completed! -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yiwen101/ip.git completed! +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/supermii2/ip.git... -Sep 26, 2023 4:03:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kurtyjlee/ip.git (master)... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/supermii2/ip.git to complete... -Sep 26, 2023 4:03:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kurtyjlee/ip.git (master) completed! -Sep 26, 2023 4:03:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [16/478] Analyzing https://github.com/josepholim/ip.git (master)... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yiwen101/ip.git completed! -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tiongMax/ip.git completed! +Sep 26, 2023 2:06:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/migfoo02/ip.git (master)... +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/remuslum/ip.git... -Sep 26, 2023 4:03:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/josepholim/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/josepholim/ip.git (master)... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:24 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/remuslum/ip.git to complete... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tiongMax/ip.git completed! -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/migfoo02/ip.git (master)... +Sep 26, 2023 2:06:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/migfoo02/ip.git (master) completed! +Sep 26, 2023 2:06:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [33/478] Analyzing https://github.com/Darren159/ip.git (master)... +Sep 26, 2023 2:06:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Darren159/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Darren159/ip.git (master)... +Sep 26, 2023 2:06:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SynapseProgramming/ip.git (master)... +Sep 26, 2023 2:06:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SynapseProgramming/ip.git (master)... +Sep 26, 2023 2:06:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SynapseProgramming/ip.git (master) completed! +Sep 26, 2023 2:06:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [34/478] Analyzing https://github.com/joeng03/ip.git (master)... +Sep 26, 2023 2:06:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/joeng03/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/joeng03/ip.git (master)... +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chuababyy/ip.git completed! +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kanna-1/ip.git... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kanna-1/ip.git to complete... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chuababyy/ip.git completed! -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Clin-lyx/ip.git completed! +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nicolengk/ip.git... -Sep 26, 2023 4:03:04 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nicolengk/ip.git to complete... -Sep 26, 2023 4:03:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/geoffong11/ip.git (master)... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/remuslum/ip.git completed! -Sep 26, 2023 4:03:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/geoffong11/ip.git (master)... -Sep 26, 2023 4:03:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/geoffong11/ip.git (master) completed! -Sep 26, 2023 4:03:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/478] Analyzing https://github.com/A1WAYSD/ip.git (master)... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/supermii2/ip.git completed! +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/newway1814/ip.git... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/newway1814/ip.git to complete... -Sep 26, 2023 4:03:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/A1WAYSD/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/A1WAYSD/ip.git (master)... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/supermii2/ip.git completed! -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/remuslum/ip.git completed! +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/glenngnng/ip.git... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicolengk/ip.git completed! -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:25 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/glenngnng/ip.git to complete... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Darren159/ip.git (master)... +Sep 26, 2023 2:06:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Darren159/ip.git (master)... +Sep 26, 2023 2:06:25 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Darren159/ip.git (master) completed! +Sep 26, 2023 2:06:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [35/478] Analyzing https://github.com/imkwokyong/ip.git (master)... +Sep 26, 2023 2:06:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/imkwokyong/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/imkwokyong/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/joeng03/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/joeng03/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/joeng03/ip.git (master) completed! +Sep 26, 2023 2:06:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [36/478] Analyzing https://github.com/vijay-shankaranand/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/vijay-shankaranand/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/vijay-shankaranand/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/glenngnng/ip.git completed! +Sep 26, 2023 2:06:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zsh-eng/ip.git... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zsh-eng/ip.git to complete... -Sep 26, 2023 4:03:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/josepholim/ip.git (master)... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/newway1814/ip.git completed! -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicolengk/ip.git completed! +Sep 26, 2023 2:06:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mingyuanc/ip.git... -Sep 26, 2023 4:03:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/josepholim/ip.git (master)... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/mingyuanc/ip.git to complete... -Sep 26, 2023 4:03:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/josepholim/ip.git (master) completed! -Sep 26, 2023 4:03:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [18/478] Analyzing https://github.com/jianrong7/ip.git (master)... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zsh-eng/ip.git completed! -Sep 26, 2023 4:03:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jianrong7/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jianrong7/ip.git (master)... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:26 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LamJiuFong/ip.git... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/mingyuanc/ip.git to complete... +Sep 26, 2023 2:06:26 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LamJiuFong/ip.git to complete... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/glenngnng/ip.git completed! -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/imkwokyong/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vijay-shankaranand/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/imkwokyong/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/imkwokyong/ip.git (master) completed! +Sep 26, 2023 2:06:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [37/478] Analyzing https://github.com/SelwynAng/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vijay-shankaranand/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vijay-shankaranand/ip.git (master) completed! +Sep 26, 2023 2:06:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [38/478] Analyzing https://github.com/jeffrey-jian/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SelwynAng/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SelwynAng/ip.git (master)... +Sep 26, 2023 2:06:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jeffrey-jian/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jeffrey-jian/ip.git (master)... +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zsh-eng/ip.git completed! +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GlendaChong/ip.git... -Sep 26, 2023 4:03:05 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GlendaChong/ip.git to complete... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kanna-1/ip.git completed! -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mingyuanc/ip.git completed! -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LamJiuFong/ip.git completed! +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/starrylight99/ip.git... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mingyuanc/ip.git completed! +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AustinHuang1203/ip.git... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AustinHuang1203/ip.git to complete... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/starrylight99/ip.git to complete... -Sep 26, 2023 4:03:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/A1WAYSD/ip.git (master)... -Sep 26, 2023 4:03:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/A1WAYSD/ip.git (master)... -Sep 26, 2023 4:03:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/A1WAYSD/ip.git (master) completed! -Sep 26, 2023 4:03:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/478] Analyzing https://github.com/NgChunMan/ip.git (master)... -Sep 26, 2023 4:03:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NgChunMan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NgChunMan/ip.git (master)... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GlendaChong/ip.git completed! -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LamJiuFong/ip.git completed! -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AustinHuang1203/ip.git to complete... +Sep 26, 2023 2:06:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SelwynAng/ip.git (master)... +Sep 26, 2023 2:06:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SelwynAng/ip.git (master)... +Sep 26, 2023 2:06:27 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SelwynAng/ip.git (master) completed! +Sep 26, 2023 2:06:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [39/478] Analyzing https://github.com/tanyyyming/ip.git (master)... +Sep 26, 2023 2:06:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jeffrey-jian/ip.git (master)... +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kanna-1/ip.git completed! +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seewhyjay/ip.git... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruth-lim/ip.git... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ruth-lim/ip.git to complete... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:27 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seewhyjay/ip.git to complete... -Sep 26, 2023 4:03:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jianrong7/ip.git (master)... -Sep 26, 2023 4:03:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jianrong7/ip.git (master)... -Sep 26, 2023 4:03:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jianrong7/ip.git (master) completed! -Sep 26, 2023 4:03:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/478] Analyzing https://github.com/limjunxian1/ip.git (master)... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jeffrey-jian/ip.git (master)... +Sep 26, 2023 2:06:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanyyyming/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanyyyming/ip.git (master)... +Sep 26, 2023 2:06:27 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jeffrey-jian/ip.git (master) completed! +Sep 26, 2023 2:06:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [40/478] Analyzing https://github.com/JCSnap/ip.git (master)... +Sep 26, 2023 2:06:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JCSnap/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JCSnap/ip.git (master)... +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GlendaChong/ip.git completed! +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/starrylight99/ip.git completed! -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruth-lim/ip.git... +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/limzhenwy/ip.git... -Sep 26, 2023 4:03:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/limjunxian1/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/limjunxian1/ip.git (master)... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ruth-lim/ip.git to complete... +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/limzhenwy/ip.git to complete... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JCSnap/ip.git (master)... +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AustinHuang1203/ip.git completed! -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/seewhyjay/ip.git completed! -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xCOLOURx/ip.git... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zacwong2151/ip.git... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JCSnap/ip.git (master)... +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xCOLOURx/ip.git to complete... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JCSnap/ip.git (master) completed! +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/seewhyjay/ip.git completed! +Sep 26, 2023 2:06:28 PM reposense.report.ReportGenerator analyzeRepos +INFO: [41/478] Analyzing https://github.com/AprupKale/ip.git (master)... +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zacwong2151/ip.git... +Sep 26, 2023 2:06:28 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zacwong2151/ip.git to complete... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruth-lim/ip.git completed! -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:28 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AprupKale/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AprupKale/ip.git (master)... +Sep 26, 2023 2:06:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanyyyming/ip.git (master)... +Sep 26, 2023 2:06:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanyyyming/ip.git (master)... +Sep 26, 2023 2:06:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanyyyming/ip.git (master) completed! +Sep 26, 2023 2:06:28 PM reposense.report.ReportGenerator analyzeRepos +INFO: [42/478] Analyzing https://github.com/PetrichorPrecipice/ip.git (master)... +Sep 26, 2023 2:06:28 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PetrichorPrecipice/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PetrichorPrecipice/ip.git (master)... +Sep 26, 2023 2:06:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AprupKale/ip.git (master)... +Sep 26, 2023 2:06:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AprupKale/ip.git (master)... +Sep 26, 2023 2:06:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AprupKale/ip.git (master) completed! +Sep 26, 2023 2:06:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [43/478] Analyzing https://github.com/woojiahao/ip.git (master)... +Sep 26, 2023 2:06:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/woojiahao/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/woojiahao/ip.git (master)... +Sep 26, 2023 2:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zacwong2151/ip.git completed! +Sep 26, 2023 2:06:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Zjinnnn/ip.git... -Sep 26, 2023 4:03:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Zjinnnn/ip.git to complete... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PetrichorPrecipice/ip.git (master)... +Sep 26, 2023 2:06:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/limzhenwy/ip.git completed! -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Zjinnnn/ip.git to complete... +Sep 26, 2023 2:06:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/awhb/ip.git... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/awhb/ip.git to complete... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/xCOLOURx/ip.git completed! -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zacwong2151/ip.git completed! -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:29 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/teoks0199/ip.git... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:29 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/teoks0199/ip.git to complete... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PetrichorPrecipice/ip.git (master)... +Sep 26, 2023 2:06:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PetrichorPrecipice/ip.git (master) completed! +Sep 26, 2023 2:06:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [44/478] Analyzing https://github.com/syamfarh/ip.git (master)... +Sep 26, 2023 2:06:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/syamfarh/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/syamfarh/ip.git (master)... +Sep 26, 2023 2:06:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/syamfarh/ip.git (master)... +Sep 26, 2023 2:06:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/syamfarh/ip.git (master)... +Sep 26, 2023 2:06:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/syamfarh/ip.git (master) completed! +Sep 26, 2023 2:06:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [45/478] Analyzing https://github.com/D-Limiter/ip.git (master)... +Sep 26, 2023 2:06:30 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/D-Limiter/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/D-Limiter/ip.git (master)... +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teoks0199/ip.git completed! +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/qz1004/ip.git... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/qz1004/ip.git to complete... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Zjinnnn/ip.git completed! -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/pangyyen/ip.git... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/pangyyen/ip.git to complete... -Sep 26, 2023 4:03:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/limjunxian1/ip.git (master)... -Sep 26, 2023 4:03:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/NgChunMan/ip.git (master)... -Sep 26, 2023 4:03:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/limjunxian1/ip.git (master)... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/qz1004/ip.git to complete... +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/awhb/ip.git completed! -Sep 26, 2023 4:03:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/NgChunMan/ip.git (master)... -Sep 26, 2023 4:03:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/NgChunMan/ip.git (master) completed! -Sep 26, 2023 4:03:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/limjunxian1/ip.git (master) completed! -Sep 26, 2023 4:03:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [21/478] Analyzing https://github.com/jack1e0/ip.git (master)... -Sep 26, 2023 4:03:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [22/478] Analyzing https://github.com/hjoneweek/ip.git (master)... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/pangyyen/ip.git... +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Mahidharah/ip.git... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/pangyyen/ip.git to complete... +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruth-lim/ip.git completed! +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Mahidharah/ip.git to complete... -Sep 26, 2023 4:03:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/hjoneweek/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/hjoneweek/ip.git (master)... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teoks0199/ip.git completed! -Sep 26, 2023 4:03:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jack1e0/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jack1e0/ip.git (master)... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/qz1004/ip.git completed! -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jason-raiin/ip.git... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:30 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jason-raiin/ip.git to complete... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/woojiahao/ip.git (master)... +Sep 26, 2023 2:06:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/woojiahao/ip.git (master)... +Sep 26, 2023 2:06:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/woojiahao/ip.git (master) completed! +Sep 26, 2023 2:06:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [46/478] Analyzing https://github.com/LINCHENYU2030S/ip.git (master)... +Sep 26, 2023 2:06:30 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LINCHENYU2030S/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LINCHENYU2030S/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/D-Limiter/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/D-Limiter/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/D-Limiter/ip.git (master) completed! +Sep 26, 2023 2:06:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [47/478] Analyzing https://github.com/coderhuang559/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Mahidharah/ip.git completed! +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/pangyyen/ip.git completed! -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/coderhuang559/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/coderhuang559/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ravern/ip.git... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jason-raiin/ip.git completed! +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bobscodedump/ip.git... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LINCHENYU2030S/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nixonwidjaja/ip.git... +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bobscodedump/ip.git to complete... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ravern/ip.git to complete... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Mahidharah/ip.git completed! -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nixonwidjaja/ip.git... -Sep 26, 2023 4:03:07 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/qz1004/ip.git completed! +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nixonwidjaja/ip.git to complete... -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jason-raiin/ip.git completed! -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/techjay-c/ip.git... -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LINCHENYU2030S/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LINCHENYU2030S/ip.git (master) completed! +Sep 26, 2023 2:06:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [48/478] Analyzing https://github.com/pra-navi/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/techjay-c/ip.git to complete... -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/pra-navi/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/pra-navi/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/coderhuang559/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/coderhuang559/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/coderhuang559/ip.git (master) completed! +Sep 26, 2023 2:06:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [49/478] Analyzing https://github.com/phiphi-tan/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pra-navi/ip.git (master)... +Sep 26, 2023 2:06:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/phiphi-tan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/phiphi-tan/ip.git (master)... +Sep 26, 2023 2:06:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pra-navi/ip.git (master)... +Sep 26, 2023 2:06:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pra-navi/ip.git (master) completed! +Sep 26, 2023 2:06:32 PM reposense.report.ReportGenerator analyzeRepos +INFO: [50/478] Analyzing https://github.com/ktzy0305/ip.git (master)... +Sep 26, 2023 2:06:32 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ktzy0305/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ktzy0305/ip.git (master)... +Sep 26, 2023 2:06:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ravern/ip.git completed! -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:32 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryanozx/ip.git... -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryanozx/ip.git to complete... -Sep 26, 2023 4:03:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hjoneweek/ip.git (master)... -Sep 26, 2023 4:03:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hjoneweek/ip.git (master)... -Sep 26, 2023 4:03:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hjoneweek/ip.git (master) completed! -Sep 26, 2023 4:03:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [23/478] Analyzing https://github.com/dishenggg/ip.git (master)... -Sep 26, 2023 4:03:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dishenggg/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dishenggg/ip.git (master)... -Sep 26, 2023 4:03:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jack1e0/ip.git (master)... -Sep 26, 2023 4:03:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jack1e0/ip.git (master)... -Sep 26, 2023 4:03:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jack1e0/ip.git (master) completed! -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bobscodedump/ip.git completed! -Sep 26, 2023 4:03:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [24/478] Analyzing https://github.com/zhyuhan/ip.git (master)... -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/techjay-c/ip.git completed! +Sep 26, 2023 2:06:32 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LuahJunYang/ip.git... -Sep 26, 2023 4:03:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhyuhan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhyuhan/ip.git (master)... -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:32 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LuahJunYang/ip.git to complete... -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/techjay-c/ip.git completed! -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ryanozx/ip.git completed! -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/phiphi-tan/ip.git (master)... +Sep 26, 2023 2:06:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/phiphi-tan/ip.git (master)... +Sep 26, 2023 2:06:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/phiphi-tan/ip.git (master) completed! +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bobscodedump/ip.git completed! +Sep 26, 2023 2:06:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [51/478] Analyzing https://github.com/Chen1x/ip.git (master)... +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/HEEaZ/ip.git... -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dom-buri/ip.git... -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HEEaZ/ip.git to complete... -Sep 26, 2023 4:03:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dom-buri/ip.git to complete... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Chen1x/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Chen1x/ip.git (master)... +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LuahJunYang/ip.git completed! -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dom-buri/ip.git... +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dom-buri/ip.git to complete... +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nixonwidjaja/ip.git completed! +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AlainS87/ip.git... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AlainS87/ip.git to complete... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HEEaZ/ip.git completed! -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ryanozx/ip.git completed! +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tiongjjyi/ip.git... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tiongjjyi/ip.git to complete... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dom-buri/ip.git completed! -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nixonwidjaja/ip.git completed! -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HEEaZ/ip.git completed! +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Vanessamae23/ip.git... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Vanessamae23/ip.git to complete... +Sep 26, 2023 2:06:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Chen1x/ip.git (master)... +Sep 26, 2023 2:06:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ktzy0305/ip.git (master)... +Sep 26, 2023 2:06:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Chen1x/ip.git (master)... +Sep 26, 2023 2:06:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Chen1x/ip.git (master) completed! +Sep 26, 2023 2:06:34 PM reposense.report.ReportGenerator analyzeRepos +INFO: [52/478] Analyzing https://github.com/LordSaumya/ip.git (master)... +Sep 26, 2023 2:06:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ktzy0305/ip.git (master)... +Sep 26, 2023 2:06:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LordSaumya/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LordSaumya/ip.git (master)... +Sep 26, 2023 2:06:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ktzy0305/ip.git (master) completed! +Sep 26, 2023 2:06:34 PM reposense.report.ReportGenerator analyzeRepos +INFO: [53/478] Analyzing https://github.com/yanghengtang/ip.git (master)... +Sep 26, 2023 2:06:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yanghengtang/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yanghengtang/ip.git (master)... +Sep 26, 2023 2:06:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dom-buri/ip.git completed! +Sep 26, 2023 2:06:34 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/fuyiqiao/ip.git... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/fuyiqiao/ip.git to complete... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Vanessamae23/ip.git to complete... -Sep 26, 2023 4:03:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dishenggg/ip.git (master)... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tiongjjyi/ip.git completed! -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:34 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/spatuly/ip.git... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/spatuly/ip.git to complete... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/fuyiqiao/ip.git completed! -Sep 26, 2023 4:03:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhyuhan/ip.git (master)... -Sep 26, 2023 4:03:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dishenggg/ip.git (master)... -Sep 26, 2023 4:03:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dishenggg/ip.git (master) completed! -Sep 26, 2023 4:03:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [25/478] Analyzing https://github.com/Dioclei/ip.git (master)... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tanshiyu1999/ip.git... -Sep 26, 2023 4:03:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhyuhan/ip.git (master)... -Sep 26, 2023 4:03:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhyuhan/ip.git (master) completed! -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Vanessamae23/ip.git completed! -Sep 26, 2023 4:03:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [26/478] Analyzing https://github.com/Daphne789/ip.git (master)... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tanshiyu1999/ip.git... +Sep 26, 2023 2:06:34 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanshiyu1999/ip.git to complete... -Sep 26, 2023 4:03:09 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LordSaumya/ip.git (master)... +Sep 26, 2023 2:06:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/fuyiqiao/ip.git completed! +Sep 26, 2023 2:06:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LordSaumya/ip.git (master)... +Sep 26, 2023 2:06:35 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kb-Tay/ip.git... -Sep 26, 2023 4:03:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Dioclei/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Dioclei/ip.git (master)... -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LordSaumya/ip.git (master) completed! +Sep 26, 2023 2:06:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [54/478] Analyzing https://github.com/johnnythesnake12/ip.git (master)... +Sep 26, 2023 2:06:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kb-Tay/ip.git to complete... -Sep 26, 2023 4:03:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Daphne789/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Daphne789/ip.git (master)... -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:35 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/johnnythesnake12/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/johnnythesnake12/ip.git (master)... +Sep 26, 2023 2:06:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanshiyu1999/ip.git completed! -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:35 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/beatricecst/ip.git... -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/beatricecst/ip.git to complete... -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/spatuly/ip.git completed! -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:35 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanveersingh10/ip.git... -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:35 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanveersingh10/ip.git to complete... -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yanghengtang/ip.git (master)... +Sep 26, 2023 2:06:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yanghengtang/ip.git (master)... +Sep 26, 2023 2:06:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yanghengtang/ip.git (master) completed! +Sep 26, 2023 2:06:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [55/478] Analyzing https://github.com/oeggy03/ip.git (master)... +Sep 26, 2023 2:06:35 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/oeggy03/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/oeggy03/ip.git (master)... +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Kb-Tay/ip.git completed! -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thienmy0/ip.git... -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/thienmy0/ip.git to complete... -Sep 26, 2023 4:03:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Daphne789/ip.git (master)... -Sep 26, 2023 4:03:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Dioclei/ip.git (master)... -Sep 26, 2023 4:03:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Daphne789/ip.git (master)... -Sep 26, 2023 4:03:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Dioclei/ip.git (master)... -Sep 26, 2023 4:03:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Dioclei/ip.git (master) completed! -Sep 26, 2023 4:03:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Daphne789/ip.git (master) completed! -Sep 26, 2023 4:03:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [27/478] Analyzing https://github.com/WinstonLeonard/ip.git (master)... -Sep 26, 2023 4:03:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [28/478] Analyzing https://github.com/peiran18/ip.git (master)... -Sep 26, 2023 4:03:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WinstonLeonard/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WinstonLeonard/ip.git (master)... -Sep 26, 2023 4:03:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/peiran18/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/peiran18/ip.git (master)... -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/johnnythesnake12/ip.git (master)... +Sep 26, 2023 2:06:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/johnnythesnake12/ip.git (master)... +Sep 26, 2023 2:06:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/johnnythesnake12/ip.git (master) completed! +Sep 26, 2023 2:06:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [56/478] Analyzing https://github.com/p-xp/ip.git (master)... +Sep 26, 2023 2:06:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/p-xp/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/p-xp/ip.git (master)... +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/beatricecst/ip.git completed! -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanveersingh10/ip.git completed! -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/s0ngyang/ip.git... -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/s0ngyang/ip.git to complete... -Sep 26, 2023 4:03:10 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanveersingh10/ip.git completed! +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ldinghan/ip.git... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ldinghan/ip.git to complete... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/thienmy0/ip.git completed! -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/feifeiraindrops/ip.git... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:36 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/feifeiraindrops/ip.git to complete... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/oeggy03/ip.git (master)... +Sep 26, 2023 2:06:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/oeggy03/ip.git (master)... +Sep 26, 2023 2:06:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/p-xp/ip.git (master)... +Sep 26, 2023 2:06:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/oeggy03/ip.git (master) completed! +Sep 26, 2023 2:06:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [57/478] Analyzing https://github.com/matochichap/ip.git (master)... +Sep 26, 2023 2:06:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/matochichap/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/matochichap/ip.git (master)... +Sep 26, 2023 2:06:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/p-xp/ip.git (master)... +Sep 26, 2023 2:06:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/p-xp/ip.git (master) completed! +Sep 26, 2023 2:06:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [58/478] Analyzing https://github.com/TiwKangXu/ip.git (master)... +Sep 26, 2023 2:06:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/s0ngyang/ip.git completed! -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ldinghan/ip.git completed! -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:37 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryanongwx/ip.git... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryanongwx/ip.git to complete... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TiwKangXu/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TiwKangXu/ip.git (master)... +Sep 26, 2023 2:06:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ldinghan/ip.git completed! +Sep 26, 2023 2:06:37 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kwangthiag/ip.git... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kwangthiag/ip.git to complete... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/feifeiraindrops/ip.git completed! -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:37 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/elhy1999/ip.git... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:37 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/elhy1999/ip.git to complete... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ryanongwx/ip.git completed! -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/songgthu/ip.git... -Sep 26, 2023 4:03:11 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/songgthu/ip.git to complete... -Sep 26, 2023 4:03:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WinstonLeonard/ip.git (master)... -Sep 26, 2023 4:03:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/peiran18/ip.git (master)... -Sep 26, 2023 4:03:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WinstonLeonard/ip.git (master)... -Sep 26, 2023 4:03:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WinstonLeonard/ip.git (master) completed! -Sep 26, 2023 4:03:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/peiran18/ip.git (master)... -Sep 26, 2023 4:03:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/peiran18/ip.git (master) completed! -Sep 26, 2023 4:03:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [30/478] Analyzing https://github.com/AriellaCallista/ip.git (master)... -Sep 26, 2023 4:03:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [29/478] Analyzing https://github.com/migfoo02/ip.git (master)... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kwangthiag/ip.git completed! -Sep 26, 2023 4:03:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/migfoo02/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/migfoo02/ip.git (master)... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GohTengFong/ip.git... -Sep 26, 2023 4:03:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AriellaCallista/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AriellaCallista/ip.git (master)... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GohTengFong/ip.git to complete... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/elhy1999/ip.git completed! -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:38 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/simbayippy/ip.git... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:38 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/simbayippy/ip.git to complete... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/songgthu/ip.git completed! -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TiwKangXu/ip.git (master)... +Sep 26, 2023 2:06:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TiwKangXu/ip.git (master)... +Sep 26, 2023 2:06:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TiwKangXu/ip.git (master) completed! +Sep 26, 2023 2:06:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [59/478] Analyzing https://github.com/ScarletBlanks/ip.git (master)... +Sep 26, 2023 2:06:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ScarletBlanks/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ScarletBlanks/ip.git (master)... +Sep 26, 2023 2:06:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/matochichap/ip.git (master)... +Sep 26, 2023 2:06:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/matochichap/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/matochichap/ip.git (master) completed! +Sep 26, 2023 2:06:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [60/478] Analyzing https://github.com/chiayunrong/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlainS87/ip.git completed! +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Khaleelur-Rahman/ip.git... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chiayunrong/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chiayunrong/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Khaleelur-Rahman/ip.git to complete... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GohTengFong/ip.git completed! -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/songgthu/ip.git completed! +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/proto-aiken-13/ip.git... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/simbayippy/ip.git completed! -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/proto-aiken-13/ip.git to complete... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GohTengFong/ip.git completed! +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bwangpj/ip.git... -Sep 26, 2023 4:03:12 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bwangpj/ip.git to complete... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Khaleelur-Rahman/ip.git completed! -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/simbayippy/ip.git completed! +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/weeweh/ip.git... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ScarletBlanks/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/weeweh/ip.git to complete... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bwangpj/ip.git completed! -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ScarletBlanks/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ScarletBlanks/ip.git (master) completed! +Sep 26, 2023 2:06:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [61/478] Analyzing https://github.com/devanshubisht/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/devanshubisht/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/devanshubisht/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chiayunrong/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chiayunrong/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chiayunrong/ip.git (master) completed! +Sep 26, 2023 2:06:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [62/478] Analyzing https://github.com/jx124/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Khaleelur-Rahman/ip.git completed! +Sep 26, 2023 2:06:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jx124/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jx124/ip.git (master)... +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/s-peiran/ip.git... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/proto-aiken-13/ip.git completed! -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:39 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/s-peiran/ip.git to complete... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/devanshubisht/ip.git (master)... +Sep 26, 2023 2:06:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/devanshubisht/ip.git (master)... +Sep 26, 2023 2:06:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/devanshubisht/ip.git (master) completed! +Sep 26, 2023 2:06:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [63/478] Analyzing https://github.com/applepiofmyeye/ip.git (master)... +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/proto-aiken-13/ip.git completed! +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jylow/ip.git... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jylow/ip.git to complete... -Sep 26, 2023 4:03:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/migfoo02/ip.git (master)... -Sep 26, 2023 4:03:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/migfoo02/ip.git (master)... -Sep 26, 2023 4:03:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/migfoo02/ip.git (master) completed! -Sep 26, 2023 4:03:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [31/478] Analyzing https://github.com/Jonyxzx/ip.git (master)... -Sep 26, 2023 4:03:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jonyxzx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jonyxzx/ip.git (master)... -Sep 26, 2023 4:03:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AriellaCallista/ip.git (master)... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/weeweh/ip.git completed! -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lawruixi/ip.git... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lawruixi/ip.git to complete... -Sep 26, 2023 4:03:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AriellaCallista/ip.git (master)... -Sep 26, 2023 4:03:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AriellaCallista/ip.git (master) completed! -Sep 26, 2023 4:03:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [32/478] Analyzing https://github.com/SynapseProgramming/ip.git (master)... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/s-peiran/ip.git completed! -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bwangpj/ip.git completed! +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JeremyYong128/ip.git... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jylow/ip.git completed! -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JeremyYong128/ip.git to complete... -Sep 26, 2023 4:03:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SynapseProgramming/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SynapseProgramming/ip.git (master)... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/s-peiran/ip.git completed! +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/brandon-nam/ip.git... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:40 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/brandon-nam/ip.git to complete... -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jx124/ip.git (master)... +Sep 26, 2023 2:06:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jx124/ip.git (master)... +Sep 26, 2023 2:06:40 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jx124/ip.git (master) completed! +Sep 26, 2023 2:06:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [64/478] Analyzing https://github.com/AryanG01/ip.git (master)... +Sep 26, 2023 2:06:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AryanG01/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AryanG01/ip.git (master)... +Sep 26, 2023 2:06:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/applepiofmyeye/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/applepiofmyeye/ip.git (master)... +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lawruixi/ip.git completed! -Sep 26, 2023 4:03:13 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LHeng1/ip.git... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jylow/ip.git completed! +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LHeng1/ip.git to complete... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlainS87/ip.git completed! -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Leb14/ip.git... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Leb14/ip.git to complete... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JeremyYong128/ip.git completed! -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/B-enguin/ip.git... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/B-enguin/ip.git to complete... +Sep 26, 2023 2:06:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AryanG01/ip.git (master)... +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/brandon-nam/ip.git completed! -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/s-kybound/ip.git... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/B-enguin/ip.git to complete... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AryanG01/ip.git (master)... +Sep 26, 2023 2:06:41 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/s-kybound/ip.git to complete... -Sep 26, 2023 4:03:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SynapseProgramming/ip.git (master)... -Sep 26, 2023 4:03:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SynapseProgramming/ip.git (master)... -Sep 26, 2023 4:03:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SynapseProgramming/ip.git (master) completed! -Sep 26, 2023 4:03:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [33/478] Analyzing https://github.com/Darren159/ip.git (master)... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LHeng1/ip.git completed! -Sep 26, 2023 4:03:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Darren159/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Darren159/ip.git (master)... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AryanG01/ip.git (master) completed! +Sep 26, 2023 2:06:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [65/478] Analyzing https://github.com/kayabuttertoastt/ip.git (master)... +Sep 26, 2023 2:06:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kayabuttertoastt/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kayabuttertoastt/ip.git (master)... +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Leb14/ip.git completed! +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wesho1107/ip.git... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wesho1107/ip.git to complete... -Sep 26, 2023 4:03:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jonyxzx/ip.git (master)... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Leb14/ip.git completed! -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yihfei/ip.git... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LHeng1/ip.git completed! +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/B-enguin/ip.git completed! -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/s-kybound/ip.git completed! -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yihfei/ip.git... +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yihfei/ip.git to complete... -Sep 26, 2023 4:03:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jonyxzx/ip.git (master)... -Sep 26, 2023 4:03:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jonyxzx/ip.git (master) completed! -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AaronJT1/ip.git... -Sep 26, 2023 4:03:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [34/478] Analyzing https://github.com/imkwokyong/ip.git (master)... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dlathyun/ip.git... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AaronJT1/ip.git to complete... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/s-kybound/ip.git completed! +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dlathyun/ip.git... +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dlathyun/ip.git to complete... -Sep 26, 2023 4:03:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/imkwokyong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/imkwokyong/ip.git (master)... -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kayabuttertoastt/ip.git (master)... +Sep 26, 2023 2:06:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kayabuttertoastt/ip.git (master)... +Sep 26, 2023 2:06:42 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kayabuttertoastt/ip.git (master) completed! +Sep 26, 2023 2:06:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [66/478] Analyzing https://github.com/sheryew/ip.git (master)... +Sep 26, 2023 2:06:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sheryew/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sheryew/ip.git (master)... +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wesho1107/ip.git completed! -Sep 26, 2023 4:03:14 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ricketytoc/ip.git... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ricketytoc/ip.git to complete... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yihfei/ip.git completed! -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ricketytoc/ip.git... +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Angelyxx/ip.git... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Angelyxx/ip.git to complete... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dlathyun/ip.git completed! -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ricketytoc/ip.git to complete... +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AaronJT1/ip.git completed! +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jingting1412/ip.git... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jingting1412/ip.git to complete... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AaronJT1/ip.git completed! -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sheryew/ip.git (master)... +Sep 26, 2023 2:06:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sheryew/ip.git (master)... +Sep 26, 2023 2:06:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sheryew/ip.git (master) completed! +Sep 26, 2023 2:06:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [67/478] Analyzing https://github.com/jonasongg/ip.git (master)... +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dlathyun/ip.git completed! +Sep 26, 2023 2:06:43 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jonasongg/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jonasongg/ip.git (master)... +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SinhaVedant/ip.git... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SinhaVedant/ip.git to complete... -Sep 26, 2023 4:03:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Darren159/ip.git (master)... -Sep 26, 2023 4:03:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Darren159/ip.git (master)... -Sep 26, 2023 4:03:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Darren159/ip.git (master) completed! -Sep 26, 2023 4:03:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [35/478] Analyzing https://github.com/joeng03/ip.git (master)... -Sep 26, 2023 4:03:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/imkwokyong/ip.git (master)... -Sep 26, 2023 4:03:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/joeng03/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/joeng03/ip.git (master)... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ricketytoc/ip.git completed! -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Angelyxx/ip.git completed! -Sep 26, 2023 4:03:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/imkwokyong/ip.git (master)... -Sep 26, 2023 4:03:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/imkwokyong/ip.git (master) completed! -Sep 26, 2023 4:03:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [36/478] Analyzing https://github.com/vijay-shankaranand/ip.git (master)... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/freddychenyouren2/ip.git... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jordankanghm/ip.git... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/freddychenyouren2/ip.git to complete... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jordankanghm/ip.git to complete... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SinhaVedant/ip.git completed! -Sep 26, 2023 4:03:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/vijay-shankaranand/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/vijay-shankaranand/ip.git (master)... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ricketytoc/ip.git completed! +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jordankanghm/ip.git... +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jingting1412/ip.git completed! -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jordankanghm/ip.git to complete... +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/adhigop13/ip.git... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:43 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/adhigop13/ip.git to complete... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jonasongg/ip.git (master)... +Sep 26, 2023 2:06:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/applepiofmyeye/ip.git (master)... +Sep 26, 2023 2:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jonasongg/ip.git (master)... +Sep 26, 2023 2:06:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jonasongg/ip.git (master) completed! +Sep 26, 2023 2:06:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [68/478] Analyzing https://github.com/yiwen101/ip.git (master)... +Sep 26, 2023 2:06:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/applepiofmyeye/ip.git (master)... +Sep 26, 2023 2:06:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/applepiofmyeye/ip.git (master) completed! +Sep 26, 2023 2:06:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yiwen101/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yiwen101/ip.git (master)... +Sep 26, 2023 2:06:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SinhaVedant/ip.git completed! +Sep 26, 2023 2:06:44 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/waseemingly/ip.git... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/waseemingly/ip.git to complete... -Sep 26, 2023 4:03:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jordankanghm/ip.git completed! -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [69/478] Analyzing https://github.com/tiongMax/ip.git (master)... +Sep 26, 2023 2:06:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tiongMax/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tiongMax/ip.git (master)... +Sep 26, 2023 2:06:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/adhigop13/ip.git completed! +Sep 26, 2023 2:06:44 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/raydenlim/ip.git... -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:44 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/raydenlim/ip.git to complete... -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/adhigop13/ip.git completed! -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jordankanghm/ip.git completed! +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jingyu987/ip.git... -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jingyu987/ip.git to complete... -Sep 26, 2023 4:03:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vijay-shankaranand/ip.git (master)... -Sep 26, 2023 4:03:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vijay-shankaranand/ip.git (master)... -Sep 26, 2023 4:03:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vijay-shankaranand/ip.git (master) completed! -Sep 26, 2023 4:03:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [37/478] Analyzing https://github.com/SelwynAng/ip.git (master)... -Sep 26, 2023 4:03:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SelwynAng/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SelwynAng/ip.git (master)... -Sep 26, 2023 4:03:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/joeng03/ip.git (master)... -Sep 26, 2023 4:03:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/joeng03/ip.git (master)... -Sep 26, 2023 4:03:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/joeng03/ip.git (master) completed! -Sep 26, 2023 4:03:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [38/478] Analyzing https://github.com/jeffrey-jian/ip.git (master)... -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/raydenlim/ip.git completed! -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/freddychenyouren2/ip.git completed! +Sep 26, 2023 2:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yiwen101/ip.git (master)... +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/FerdiHS/ip.git... -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/FerdiHS/ip.git to complete... -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/freddychenyouren2/ip.git completed! -Sep 26, 2023 4:03:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jeffrey-jian/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jeffrey-jian/ip.git (master)... -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yiwen101/ip.git (master)... +Sep 26, 2023 2:06:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yiwen101/ip.git (master) completed! +Sep 26, 2023 2:06:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [70/478] Analyzing https://github.com/chuababyy/ip.git (master)... +Sep 26, 2023 2:06:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tiongMax/ip.git (master)... +Sep 26, 2023 2:06:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chuababyy/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chuababyy/ip.git (master)... +Sep 26, 2023 2:06:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tiongMax/ip.git (master)... +Sep 26, 2023 2:06:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tiongMax/ip.git (master) completed! +Sep 26, 2023 2:06:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [71/478] Analyzing https://github.com/Clin-lyx/ip.git (master)... +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/raydenlim/ip.git completed! +Sep 26, 2023 2:06:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Clin-lyx/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Clin-lyx/ip.git (master)... +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jrchoo/ip.git... -Sep 26, 2023 4:03:16 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jrchoo/ip.git to complete... -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jrchoo/ip.git completed! -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jingyu987/ip.git completed! +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RiyaMehta2211/ip.git... -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/FerdiHS/ip.git completed! -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:45 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RiyaMehta2211/ip.git to complete... -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/FerdiHS/ip.git completed! +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leezhanpeng/ip.git... -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leezhanpeng/ip.git to complete... -Sep 26, 2023 4:03:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SelwynAng/ip.git (master)... -Sep 26, 2023 4:03:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SelwynAng/ip.git (master)... -Sep 26, 2023 4:03:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SelwynAng/ip.git (master) completed! -Sep 26, 2023 4:03:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [39/478] Analyzing https://github.com/tanyyyming/ip.git (master)... -Sep 26, 2023 4:03:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanyyyming/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanyyyming/ip.git (master)... -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jingyu987/ip.git completed! -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chuababyy/ip.git (master)... +Sep 26, 2023 2:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chuababyy/ip.git (master)... +Sep 26, 2023 2:06:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chuababyy/ip.git (master) completed! +Sep 26, 2023 2:06:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [72/478] Analyzing https://github.com/supermii2/ip.git (master)... +Sep 26, 2023 2:06:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/supermii2/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/supermii2/ip.git (master)... +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jrchoo/ip.git completed! +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/juzzztinsoong/ip.git... -Sep 26, 2023 4:03:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jeffrey-jian/ip.git (master)... -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Clin-lyx/ip.git (master)... +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/juzzztinsoong/ip.git to complete... -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Clin-lyx/ip.git (master)... +Sep 26, 2023 2:06:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Clin-lyx/ip.git (master) completed! +Sep 26, 2023 2:06:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [73/478] Analyzing https://github.com/remuslum/ip.git (master)... +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/RiyaMehta2211/ip.git completed! -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leezhanpeng/ip.git completed! -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/darrentfy/ip.git... -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/darrentfy/ip.git to complete... -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/remuslum/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/remuslum/ip.git (master)... +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leezhanpeng/ip.git completed! +Sep 26, 2023 2:06:46 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/redtailedfox/ip.git... -Sep 26, 2023 4:03:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jeffrey-jian/ip.git (master)... -Sep 26, 2023 4:03:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jeffrey-jian/ip.git (master) completed! -Sep 26, 2023 4:03:17 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/redtailedfox/ip.git to complete... -Sep 26, 2023 4:03:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [40/478] Analyzing https://github.com/JCSnap/ip.git (master)... -Sep 26, 2023 4:03:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JCSnap/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JCSnap/ip.git (master)... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/juzzztinsoong/ip.git completed! -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Fallman2/ip.git... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/darrentfy/ip.git completed! -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/redtailedfox/ip.git completed! -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Heran9/ip.git... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:47 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Fallman2/ip.git... +Sep 26, 2023 2:06:47 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/juzzztinsoong/ip.git completed! +Sep 26, 2023 2:06:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Fallman2/ip.git to complete... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:47 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Heran9/ip.git... +Sep 26, 2023 2:06:47 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/VN-Hao/ip.git... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Heran9/ip.git to complete... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:47 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/VN-Hao/ip.git to complete... -Sep 26, 2023 4:03:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanyyyming/ip.git (master)... -Sep 26, 2023 4:03:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanyyyming/ip.git (master)... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:47 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Heran9/ip.git to complete... +Sep 26, 2023 2:06:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/waseemingly/ip.git completed! -Sep 26, 2023 4:03:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanyyyming/ip.git (master) completed! -Sep 26, 2023 4:03:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [41/478] Analyzing https://github.com/AprupKale/ip.git (master)... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jingjie88/ip.git... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jingjie88/ip.git to complete... -Sep 26, 2023 4:03:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AprupKale/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AprupKale/ip.git (master)... -Sep 26, 2023 4:03:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JCSnap/ip.git (master)... -Sep 26, 2023 4:03:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JCSnap/ip.git (master)... -Sep 26, 2023 4:03:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JCSnap/ip.git (master) completed! -Sep 26, 2023 4:03:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [42/478] Analyzing https://github.com/PetrichorPrecipice/ip.git (master)... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/remuslum/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/supermii2/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/remuslum/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/remuslum/ip.git (master) completed! +Sep 26, 2023 2:06:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [74/478] Analyzing https://github.com/glenngnng/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/glenngnng/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/glenngnng/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/supermii2/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/supermii2/ip.git (master) completed! +Sep 26, 2023 2:06:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [75/478] Analyzing https://github.com/nicolengk/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nicolengk/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nicolengk/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Heran9/ip.git completed! -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/H1410101/ip.git... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Fallman2/ip.git completed! -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/H1410101/ip.git to complete... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/glenngnng/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/glenngnng/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jingjie88/ip.git completed! +Sep 26, 2023 2:06:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/glenngnng/ip.git (master) completed! +Sep 26, 2023 2:06:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [76/478] Analyzing https://github.com/newway1814/ip.git (master)... +Sep 26, 2023 2:06:48 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kimshitong/ip.git... -Sep 26, 2023 4:03:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PetrichorPrecipice/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PetrichorPrecipice/ip.git (master)... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:48 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kimshitong/ip.git to complete... -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jingjie88/ip.git completed! -Sep 26, 2023 4:03:18 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicolengk/ip.git (master)... +Sep 26, 2023 2:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicolengk/ip.git (master)... +Sep 26, 2023 2:06:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/newway1814/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/newway1814/ip.git (master)... +Sep 26, 2023 2:06:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicolengk/ip.git (master) completed! +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Fallman2/ip.git completed! +Sep 26, 2023 2:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [77/478] Analyzing https://github.com/zsh-eng/ip.git (master)... +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ivanleekk/ip.git... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ivanleekk/ip.git to complete... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/VN-Hao/ip.git completed! -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zsh-eng/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zsh-eng/ip.git (master)... +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lamchenghou/ip.git... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lamchenghou/ip.git to complete... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/newway1814/ip.git (master)... +Sep 26, 2023 2:06:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/newway1814/ip.git (master)... +Sep 26, 2023 2:06:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/newway1814/ip.git (master) completed! +Sep 26, 2023 2:06:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [78/478] Analyzing https://github.com/LamJiuFong/ip.git (master)... +Sep 26, 2023 2:06:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LamJiuFong/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LamJiuFong/ip.git (master)... +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kimshitong/ip.git completed! -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tayruxin/ip.git... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tayruxin/ip.git to complete... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ivanleekk/ip.git completed! -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tayruxin/ip.git to complete... +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/raynertjx/ip.git... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:49 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/raynertjx/ip.git to complete... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lamchenghou/ip.git completed! -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhengyup/ip.git... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhengyup/ip.git to complete... -Sep 26, 2023 4:03:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AprupKale/ip.git (master)... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tayruxin/ip.git completed! -Sep 26, 2023 4:03:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AprupKale/ip.git (master)... -Sep 26, 2023 4:03:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AprupKale/ip.git (master) completed! -Sep 26, 2023 4:03:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/478] Analyzing https://github.com/syamfarh/ip.git (master)... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zsh-eng/ip.git (master)... +Sep 26, 2023 2:06:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zsh-eng/ip.git (master)... +Sep 26, 2023 2:06:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zsh-eng/ip.git (master) completed! +Sep 26, 2023 2:06:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [79/478] Analyzing https://github.com/mingyuanc/ip.git (master)... +Sep 26, 2023 2:06:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mingyuanc/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mingyuanc/ip.git (master)... +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/H1410101/ip.git completed! +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/larrywang0701/ip.git... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/larrywang0701/ip.git to complete... -Sep 26, 2023 4:03:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/syamfarh/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/syamfarh/ip.git (master)... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/raynertjx/ip.git completed! -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LamJiuFong/ip.git (master)... +Sep 26, 2023 2:06:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LamJiuFong/ip.git (master)... +Sep 26, 2023 2:06:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LamJiuFong/ip.git (master) completed! +Sep 26, 2023 2:06:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [80/478] Analyzing https://github.com/kanna-1/ip.git (master)... +Sep 26, 2023 2:06:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kanna-1/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kanna-1/ip.git (master)... +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tayruxin/ip.git completed! +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Carlintyj/ip.git... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Carlintyj/ip.git to complete... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/H1410101/ip.git completed! -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/raynertjx/ip.git completed! +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wxwern/ip.git... -Sep 26, 2023 4:03:19 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wxwern/ip.git to complete... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zhengyup/ip.git completed! -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nubnubyas/ip.git... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:50 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nubnubyas/ip.git to complete... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mingyuanc/ip.git (master)... +Sep 26, 2023 2:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mingyuanc/ip.git (master)... +Sep 26, 2023 2:06:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mingyuanc/ip.git (master) completed! +Sep 26, 2023 2:06:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [81/478] Analyzing https://github.com/GlendaChong/ip.git (master)... +Sep 26, 2023 2:06:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GlendaChong/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GlendaChong/ip.git (master)... +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/larrywang0701/ip.git completed! -Sep 26, 2023 4:03:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PetrichorPrecipice/ip.git (master)... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aslam341/ip.git... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kanna-1/ip.git (master)... +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aslam341/ip.git to complete... -Sep 26, 2023 4:03:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PetrichorPrecipice/ip.git (master)... -Sep 26, 2023 4:03:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PetrichorPrecipice/ip.git (master) completed! -Sep 26, 2023 4:03:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [44/478] Analyzing https://github.com/woojiahao/ip.git (master)... -Sep 26, 2023 4:03:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/woojiahao/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/woojiahao/ip.git (master)... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Carlintyj/ip.git completed! -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LWZ19/ip.git... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kanna-1/ip.git (master)... +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LWZ19/ip.git to complete... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wxwern/ip.git completed! -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kanna-1/ip.git (master) completed! +Sep 26, 2023 2:06:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [82/478] Analyzing https://github.com/starrylight99/ip.git (master)... +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nubnubyas/ip.git completed! -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/starrylight99/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/starrylight99/ip.git (master)... +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/timleow/ip.git... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wxwern/ip.git completed! +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/timleow/ip.git to complete... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aslam341/ip.git completed! -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/rayshawntan/ip.git... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:51 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/rayshawntan/ip.git to complete... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aslam341/ip.git completed! +Sep 26, 2023 2:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GlendaChong/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aexolate/ip.git... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aexolate/ip.git to complete... -Sep 26, 2023 4:03:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/syamfarh/ip.git (master)... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/starrylight99/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/starrylight99/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/starrylight99/ip.git (master) completed! +Sep 26, 2023 2:06:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [83/478] Analyzing https://github.com/AustinHuang1203/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GlendaChong/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GlendaChong/ip.git (master) completed! +Sep 26, 2023 2:06:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [84/478] Analyzing https://github.com/seewhyjay/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AustinHuang1203/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AustinHuang1203/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LWZ19/ip.git completed! -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:52 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Sheeepen/ip.git... -Sep 26, 2023 4:03:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/syamfarh/ip.git (master)... -Sep 26, 2023 4:03:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/syamfarh/ip.git (master) completed! -Sep 26, 2023 4:03:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [45/478] Analyzing https://github.com/D-Limiter/ip.git (master)... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Sheeepen/ip.git to complete... -Sep 26, 2023 4:03:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/D-Limiter/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/D-Limiter/ip.git (master)... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/timleow/ip.git completed! -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shuyangk/ip.git... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/seewhyjay/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/seewhyjay/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/rayshawntan/ip.git completed! -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:52 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shuyangk/ip.git... +Sep 26, 2023 2:06:52 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shuyangk/ip.git to complete... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AustinHuang1203/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AustinHuang1203/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AustinHuang1203/ip.git (master) completed! +Sep 26, 2023 2:06:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [85/478] Analyzing https://github.com/zacwong2151/ip.git (master)... +Sep 26, 2023 2:06:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zacwong2151/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zacwong2151/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/seewhyjay/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/seewhyjay/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/seewhyjay/ip.git (master) completed! +Sep 26, 2023 2:06:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [86/478] Analyzing https://github.com/limzhenwy/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aexolate/ip.git completed! +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ncmathan/ip.git... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/limzhenwy/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/limzhenwy/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ncmathan/ip.git to complete... -Sep 26, 2023 4:03:20 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aexolate/ip.git completed! -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Sheeepen/ip.git completed! +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/iyioon/ip.git... -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shuyangk/ip.git completed! +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/iyioon/ip.git to complete... -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Sheeepen/ip.git completed! -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kiwibang/ip.git... -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zacwong2151/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kiwibang/ip.git to complete... -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shuyangk/ip.git completed! -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zacwong2151/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zacwong2151/ip.git (master) completed! +Sep 26, 2023 2:06:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [87/478] Analyzing https://github.com/xCOLOURx/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/timleow/ip.git completed! +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mingyu-wan/ip.git... -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xCOLOURx/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xCOLOURx/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mingyu-wan/ip.git to complete... -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/limzhenwy/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/limzhenwy/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/limzhenwy/ip.git (master) completed! +Sep 26, 2023 2:06:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [88/478] Analyzing https://github.com/teoks0199/ip.git (master)... +Sep 26, 2023 2:06:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/teoks0199/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/teoks0199/ip.git (master)... +Sep 26, 2023 2:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teoks0199/ip.git (master)... +Sep 26, 2023 2:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teoks0199/ip.git (master)... +Sep 26, 2023 2:06:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/iyioon/ip.git completed! -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teoks0199/ip.git (master) completed! +Sep 26, 2023 2:06:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [89/478] Analyzing https://github.com/Zjinnnn/ip.git (master)... +Sep 26, 2023 2:06:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xCOLOURx/ip.git (master)... +Sep 26, 2023 2:06:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LuoZYi/ip.git... -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LuoZYi/ip.git to complete... -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Zjinnnn/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Zjinnnn/ip.git (master)... +Sep 26, 2023 2:06:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kiwibang/ip.git completed! -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xCOLOURx/ip.git (master)... +Sep 26, 2023 2:06:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/asdfghjkxd/ip.git... -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xCOLOURx/ip.git (master) completed! +Sep 26, 2023 2:06:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/asdfghjkxd/ip.git to complete... -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [90/478] Analyzing https://github.com/awhb/ip.git (master)... +Sep 26, 2023 2:06:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/awhb/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/awhb/ip.git (master)... +Sep 26, 2023 2:06:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ncmathan/ip.git completed! -Sep 26, 2023 4:03:21 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:54 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sushiyade/ip.git... -Sep 26, 2023 4:03:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LuoZYi/ip.git completed! -Sep 26, 2023 4:03:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:54 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sushiyade/ip.git to complete... -Sep 26, 2023 4:03:22 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LuoZYi/ip.git completed! +Sep 26, 2023 2:06:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/awhb/ip.git (master)... +Sep 26, 2023 2:06:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Nid21cs/ip.git... -Sep 26, 2023 4:03:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Zjinnnn/ip.git (master)... +Sep 26, 2023 2:06:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Nid21cs/ip.git to complete... -Sep 26, 2023 4:03:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/woojiahao/ip.git (master)... -Sep 26, 2023 4:03:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/D-Limiter/ip.git (master)... -Sep 26, 2023 4:03:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/D-Limiter/ip.git (master)... -Sep 26, 2023 4:03:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/D-Limiter/ip.git (master) completed! -Sep 26, 2023 4:03:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [46/478] Analyzing https://github.com/coderhuang559/ip.git (master)... -Sep 26, 2023 4:03:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/woojiahao/ip.git (master)... -Sep 26, 2023 4:03:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/woojiahao/ip.git (master) completed! -Sep 26, 2023 4:03:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [47/478] Analyzing https://github.com/LINCHENYU2030S/ip.git (master)... -Sep 26, 2023 4:03:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/coderhuang559/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/coderhuang559/ip.git (master)... -Sep 26, 2023 4:03:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LINCHENYU2030S/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LINCHENYU2030S/ip.git (master)... -Sep 26, 2023 4:03:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/awhb/ip.git (master)... +Sep 26, 2023 2:06:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/awhb/ip.git (master) completed! +Sep 26, 2023 2:06:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [91/478] Analyzing https://github.com/ruth-lim/ip.git (master)... +Sep 26, 2023 2:06:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Zjinnnn/ip.git (master)... +Sep 26, 2023 2:06:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Zjinnnn/ip.git (master) completed! +Sep 26, 2023 2:06:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [92/478] Analyzing https://github.com/Mahidharah/ip.git (master)... +Sep 26, 2023 2:06:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruth-lim/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruth-lim/ip.git (master)... +Sep 26, 2023 2:06:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Mahidharah/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Mahidharah/ip.git (master)... +Sep 26, 2023 2:06:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/asdfghjkxd/ip.git completed! -Sep 26, 2023 4:03:22 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:55 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/McNaBry/ip.git... -Sep 26, 2023 4:03:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Nid21cs/ip.git completed! -Sep 26, 2023 4:03:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:55 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/McNaBry/ip.git to complete... -Sep 26, 2023 4:03:22 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mingyu-wan/ip.git completed! +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/miljyy/ip.git... -Sep 26, 2023 4:03:22 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/miljyy/ip.git to complete... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mingyu-wan/ip.git completed! -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/McNaBry/ip.git completed! -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Nid21cs/ip.git completed! +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ncduy0303/ip.git... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/eyelessrhyme7/ip.git... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ncduy0303/ip.git to complete... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/miljyy/ip.git completed! -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Mahidharah/ip.git (master)... +Sep 26, 2023 2:06:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Mahidharah/ip.git (master)... +Sep 26, 2023 2:06:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Mahidharah/ip.git (master) completed! +Sep 26, 2023 2:06:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [93/478] Analyzing https://github.com/pangyyen/ip.git (master)... +Sep 26, 2023 2:06:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/pangyyen/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/pangyyen/ip.git (master)... +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/McNaBry/ip.git completed! +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/eyelessrhyme7/ip.git... +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/eyelessrhyme7/ip.git to complete... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/miljyy/ip.git completed! +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ruishanteo/ip.git... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:56 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ruishanteo/ip.git to complete... -Sep 26, 2023 4:03:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/coderhuang559/ip.git (master)... -Sep 26, 2023 4:03:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LINCHENYU2030S/ip.git (master)... -Sep 26, 2023 4:03:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/coderhuang559/ip.git (master)... -Sep 26, 2023 4:03:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/coderhuang559/ip.git (master) completed! -Sep 26, 2023 4:03:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [48/478] Analyzing https://github.com/pra-navi/ip.git (master)... -Sep 26, 2023 4:03:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LINCHENYU2030S/ip.git (master)... -Sep 26, 2023 4:03:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LINCHENYU2030S/ip.git (master) completed! -Sep 26, 2023 4:03:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [49/478] Analyzing https://github.com/phiphi-tan/ip.git (master)... -Sep 26, 2023 4:03:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/pra-navi/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/pra-navi/ip.git (master)... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruth-lim/ip.git (master)... +Sep 26, 2023 2:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruth-lim/ip.git (master)... +Sep 26, 2023 2:06:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruth-lim/ip.git (master) completed! +Sep 26, 2023 2:06:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [94/478] Analyzing https://github.com/jason-raiin/ip.git (master)... +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sushiyade/ip.git completed! -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/eyelessrhyme7/ip.git completed! -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruishanteo/ip.git completed! -Sep 26, 2023 4:03:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/phiphi-tan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/phiphi-tan/ip.git (master)... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ncduy0303/ip.git completed! +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/m1oojv/ip.git... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Nixx162/ip.git... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Gabriel4357/ip.git... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ncduy0303/ip.git completed! -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jason-raiin/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jason-raiin/ip.git (master)... +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/m1oojv/ip.git to complete... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Nixx162/ip.git to complete... +Sep 26, 2023 2:06:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pangyyen/ip.git (master)... +Sep 26, 2023 2:06:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pangyyen/ip.git (master)... +Sep 26, 2023 2:06:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pangyyen/ip.git (master) completed! +Sep 26, 2023 2:06:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [95/478] Analyzing https://github.com/qz1004/ip.git (master)... +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/eyelessrhyme7/ip.git completed! +Sep 26, 2023 2:06:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/qz1004/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/qz1004/ip.git (master)... +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Gabriel4357/ip.git... +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Gabriel4357/ip.git to complete... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruishanteo/ip.git completed! +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mfjkri/ip.git... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Nixx162/ip.git to complete... -Sep 26, 2023 4:03:23 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mfjkri/ip.git to complete... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Nixx162/ip.git completed! -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/junhonglow/ip.git... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/m1oojv/ip.git completed! -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Gabriel4357/ip.git completed! -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/junhonglow/ip.git to complete... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mfjkri/ip.git completed! -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/junhonglow/ip.git... +Sep 26, 2023 2:06:57 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RoeReRe/ip.git... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/junhonglow/ip.git to complete... +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RoeReRe/ip.git to complete... +Sep 26, 2023 2:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jason-raiin/ip.git (master)... +Sep 26, 2023 2:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jason-raiin/ip.git (master)... +Sep 26, 2023 2:06:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jason-raiin/ip.git (master) completed! +Sep 26, 2023 2:06:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [96/478] Analyzing https://github.com/ravern/ip.git (master)... +Sep 26, 2023 2:06:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ravern/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ravern/ip.git (master)... +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Gabriel4357/ip.git completed! +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Badatprogrammiing/ip.git... -Sep 26, 2023 4:03:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/phiphi-tan/ip.git (master)... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nknguyenhc/ip.git... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Badatprogrammiing/ip.git to complete... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RoeReRe/ip.git to complete... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mfjkri/ip.git completed! +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nknguyenhc/ip.git... +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nknguyenhc/ip.git to complete... -Sep 26, 2023 4:03:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pra-navi/ip.git (master)... -Sep 26, 2023 4:03:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/phiphi-tan/ip.git (master)... -Sep 26, 2023 4:03:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/phiphi-tan/ip.git (master) completed! -Sep 26, 2023 4:03:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [50/478] Analyzing https://github.com/LordSaumya/ip.git (master)... -Sep 26, 2023 4:03:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pra-navi/ip.git (master)... -Sep 26, 2023 4:03:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pra-navi/ip.git (master) completed! -Sep 26, 2023 4:03:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [51/478] Analyzing https://github.com/ktzy0305/ip.git (master)... -Sep 26, 2023 4:03:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LordSaumya/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LordSaumya/ip.git (master)... -Sep 26, 2023 4:03:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ktzy0305/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ktzy0305/ip.git (master)... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/junhonglow/ip.git completed! -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/qz1004/ip.git (master)... +Sep 26, 2023 2:06:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/qz1004/ip.git (master)... +Sep 26, 2023 2:06:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/qz1004/ip.git (master) completed! +Sep 26, 2023 2:06:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [97/478] Analyzing https://github.com/techjay-c/ip.git (master)... +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RoeReRe/ip.git completed! +Sep 26, 2023 2:06:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/techjay-c/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/techjay-c/ip.git (master)... +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/winson8222/ip.git... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/winson8222/ip.git to complete... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nknguyenhc/ip.git completed! -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RoeReRe/ip.git completed! -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Badatprogrammiing/ip.git completed! -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/junhonglow/ip.git completed! +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wujy28/ip.git... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wujy28/ip.git to complete... +Sep 26, 2023 2:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ravern/ip.git (master)... +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Badatprogrammiing/ip.git completed! +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SimWPEric/ip.git... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SimWPEric/ip.git to complete... +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nknguyenhc/ip.git completed! +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/HugeNoob/ip.git... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wujy28/ip.git to complete... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ravern/ip.git (master)... +Sep 26, 2023 2:06:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ravern/ip.git (master) completed! +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HugeNoob/ip.git to complete... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SimWPEric/ip.git to complete... -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [98/478] Analyzing https://github.com/bobscodedump/ip.git (master)... +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/winson8222/ip.git completed! -Sep 26, 2023 4:03:24 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lerxuann/ip.git... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lerxuann/ip.git to complete... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SimWPEric/ip.git completed! -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Weiennn/ip.git... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bobscodedump/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bobscodedump/ip.git (master)... +Sep 26, 2023 2:06:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/techjay-c/ip.git (master)... +Sep 26, 2023 2:06:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/techjay-c/ip.git (master)... +Sep 26, 2023 2:06:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/techjay-c/ip.git (master) completed! +Sep 26, 2023 2:06:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [99/478] Analyzing https://github.com/LuahJunYang/ip.git (master)... +Sep 26, 2023 2:06:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LuahJunYang/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:06:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LuahJunYang/ip.git (master)... +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wujy28/ip.git completed! -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Weiennn/ip.git... +Sep 26, 2023 2:06:59 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Weiennn/ip.git to complete... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SimWPEric/ip.git completed! +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/maj0-0/ip.git... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/HugeNoob/ip.git completed! -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/maj0-0/ip.git to complete... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/qyaner/ip.git... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/qyaner/ip.git to complete... -Sep 26, 2023 4:03:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LordSaumya/ip.git (master)... -Sep 26, 2023 4:03:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LordSaumya/ip.git (master)... -Sep 26, 2023 4:03:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LordSaumya/ip.git (master) completed! -Sep 26, 2023 4:03:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [52/478] Analyzing https://github.com/Chen1x/ip.git (master)... -Sep 26, 2023 4:03:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Chen1x/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Chen1x/ip.git (master)... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LuahJunYang/ip.git (master)... +Sep 26, 2023 2:07:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LuahJunYang/ip.git (master)... +Sep 26, 2023 2:07:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LuahJunYang/ip.git (master) completed! +Sep 26, 2023 2:07:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [100/478] Analyzing https://github.com/nixonwidjaja/ip.git (master)... +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lerxuann/ip.git completed! -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Weiennn/ip.git completed! -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ruiyangzh/ip.git... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Bombbird2001/ip.git... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/maj0-0/ip.git completed! -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ruiyangzh/ip.git to complete... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hyc17003/ip.git... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hyc17003/ip.git to complete... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nixonwidjaja/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nixonwidjaja/ip.git (master)... +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Weiennn/ip.git completed! +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Bombbird2001/ip.git... +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Bombbird2001/ip.git to complete... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bobscodedump/ip.git (master)... +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/qyaner/ip.git completed! -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/maj0-0/ip.git completed! +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hyc17003/ip.git... +Sep 26, 2023 2:07:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bobscodedump/ip.git (master)... +Sep 26, 2023 2:07:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bobscodedump/ip.git (master) completed! +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/adammangzijun/ip.git... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [101/478] Analyzing https://github.com/ryanozx/ip.git (master)... +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/adammangzijun/ip.git to complete... -Sep 26, 2023 4:03:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ktzy0305/ip.git (master)... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hyc17003/ip.git to complete... +Sep 26, 2023 2:07:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ryanozx/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ryanozx/ip.git (master)... +Sep 26, 2023 2:07:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ruiyangzh/ip.git completed! -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/andytoh1/ip.git... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/andytoh1/ip.git to complete... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Bombbird2001/ip.git completed! -Sep 26, 2023 4:03:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ktzy0305/ip.git (master)... -Sep 26, 2023 4:03:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ktzy0305/ip.git (master) completed! -Sep 26, 2023 4:03:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [53/478] Analyzing https://github.com/yanghengtang/ip.git (master)... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Originalidk/ip.git... -Sep 26, 2023 4:03:25 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Originalidk/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hyc17003/ip.git completed! -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nixonwidjaja/ip.git (master)... +Sep 26, 2023 2:07:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/adammangzijun/ip.git completed! -Sep 26, 2023 4:03:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yanghengtang/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yanghengtang/ip.git (master)... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:01 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/quzhetao01/ip.git... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/InfiBeyond/ip.git... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:01 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/quzhetao01/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Chen1x/ip.git (master)... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/InfiBeyond/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Chen1x/ip.git (master)... -Sep 26, 2023 4:03:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Chen1x/ip.git (master) completed! -Sep 26, 2023 4:03:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [54/478] Analyzing https://github.com/p-xp/ip.git (master)... -Sep 26, 2023 4:03:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/p-xp/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/p-xp/ip.git (master)... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nixonwidjaja/ip.git (master)... +Sep 26, 2023 2:07:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nixonwidjaja/ip.git (master) completed! +Sep 26, 2023 2:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [102/478] Analyzing https://github.com/HEEaZ/ip.git (master)... +Sep 26, 2023 2:07:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/HEEaZ/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/HEEaZ/ip.git (master)... +Sep 26, 2023 2:07:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanozx/ip.git (master)... +Sep 26, 2023 2:07:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanozx/ip.git (master)... +Sep 26, 2023 2:07:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanozx/ip.git (master) completed! +Sep 26, 2023 2:07:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [103/478] Analyzing https://github.com/dom-buri/ip.git (master)... +Sep 26, 2023 2:07:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dom-buri/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dom-buri/ip.git (master)... +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/andytoh1/ip.git completed! -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/InfiBeyond/ip.git... +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/InfiBeyond/ip.git to complete... +Sep 26, 2023 2:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/HEEaZ/ip.git (master)... +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Originalidk/ip.git completed! +Sep 26, 2023 2:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HEEaZ/ip.git (master)... +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Bearypop/ip.git... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HEEaZ/ip.git (master) completed! +Sep 26, 2023 2:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [104/478] Analyzing https://github.com/tiongjjyi/ip.git (master)... +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Bearypop/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Originalidk/ip.git completed! -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sp4ce-cowboy/ip.git... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tiongjjyi/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tiongjjyi/ip.git (master)... +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/quzhetao01/ip.git completed! -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/InfiBeyond/ip.git completed! -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sp4ce-cowboy/ip.git... +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sp4ce-cowboy/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dom-buri/ip.git (master)... +Sep 26, 2023 2:07:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dom-buri/ip.git (master)... +Sep 26, 2023 2:07:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dom-buri/ip.git (master) completed! +Sep 26, 2023 2:07:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [105/478] Analyzing https://github.com/Vanessamae23/ip.git (master)... +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hyc17003/ip.git completed! +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JasonLCY-Temp/ip.git... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JasonLCY-Temp/ip.git to complete... +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/InfiBeyond/ip.git completed! +Sep 26, 2023 2:07:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Vanessamae23/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Vanessamae23/ip.git (master)... +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wjayee/ip.git... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:02 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wjayee/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JasonLCY-Temp/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Bearypop/ip.git completed! -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vivienherq/ip.git... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vivienherq/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wjayee/ip.git completed! -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tiongjjyi/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tiongjjyi/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tiongjjyi/ip.git (master) completed! +Sep 26, 2023 2:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [106/478] Analyzing https://github.com/fuyiqiao/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/fuyiqiao/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/fuyiqiao/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sp4ce-cowboy/ip.git completed! +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jamesebond/ip.git... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JasonLCY-Temp/ip.git completed! -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jamesebond/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Vanessamae23/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/fuyiqiao/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Vanessamae23/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Vanessamae23/ip.git (master) completed! +Sep 26, 2023 2:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [107/478] Analyzing https://github.com/tanshiyu1999/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JasonLCY-Temp/ip.git completed! +Sep 26, 2023 2:07:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/fuyiqiao/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jonyeokj/ip.git... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sp4ce-cowboy/ip.git completed! -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jonyeokj/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/fuyiqiao/ip.git (master) completed! +Sep 26, 2023 2:07:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanshiyu1999/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanshiyu1999/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [108/478] Analyzing https://github.com/spatuly/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/spatuly/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/spatuly/ip.git (master)... +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vivienherq/ip.git completed! +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/victorlaiyeeteng/ip.git... -Sep 26, 2023 4:03:26 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:03 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/victorlaiyeeteng/ip.git to complete... -Sep 26, 2023 4:03:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/p-xp/ip.git (master)... -Sep 26, 2023 4:03:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/p-xp/ip.git (master)... -Sep 26, 2023 4:03:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/p-xp/ip.git (master) completed! -Sep 26, 2023 4:03:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [55/478] Analyzing https://github.com/oeggy03/ip.git (master)... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vivienherq/ip.git completed! -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanshiyu1999/ip.git (master)... +Sep 26, 2023 2:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanshiyu1999/ip.git (master)... +Sep 26, 2023 2:07:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanshiyu1999/ip.git (master) completed! +Sep 26, 2023 2:07:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [109/478] Analyzing https://github.com/Kb-Tay/ip.git (master)... +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jamesebond/ip.git completed! +Sep 26, 2023 2:07:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kb-Tay/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kb-Tay/ip.git (master)... +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lyuanww/ip.git... -Sep 26, 2023 4:03:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/oeggy03/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/oeggy03/ip.git (master)... -Sep 26, 2023 4:03:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yanghengtang/ip.git (master)... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lyuanww/ip.git to complete... -Sep 26, 2023 4:03:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yanghengtang/ip.git (master)... -Sep 26, 2023 4:03:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yanghengtang/ip.git (master) completed! -Sep 26, 2023 4:03:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [56/478] Analyzing https://github.com/johnnythesnake12/ip.git (master)... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/victorlaiyeeteng/ip.git completed! -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/spatuly/ip.git (master)... +Sep 26, 2023 2:07:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/spatuly/ip.git (master)... +Sep 26, 2023 2:07:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/spatuly/ip.git (master) completed! +Sep 26, 2023 2:07:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [110/478] Analyzing https://github.com/beatricecst/ip.git (master)... +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jonyeokj/ip.git completed! +Sep 26, 2023 2:07:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/beatricecst/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/beatricecst/ip.git (master)... +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yongning0310/ip.git... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yongning0310/ip.git to complete... -Sep 26, 2023 4:03:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/johnnythesnake12/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/johnnythesnake12/ip.git (master)... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jamesebond/ip.git completed! -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/victorlaiyeeteng/ip.git completed! +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Cloud7050/ip.git... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Cloud7050/ip.git to complete... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lyuanww/ip.git completed! -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wjayee/ip.git completed! +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LoMaply/ip.git... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:04 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LoMaply/ip.git to complete... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jonyeokj/ip.git completed! -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tllshan/ip.git... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tllshan/ip.git to complete... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yongning0310/ip.git completed! -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Gavino3o/ip.git... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cloud7050/ip.git completed! -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Gavino3o/ip.git to complete... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HollaG/ip.git... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kb-Tay/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kb-Tay/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kb-Tay/ip.git (master) completed! +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [111/478] Analyzing https://github.com/tanveersingh10/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/beatricecst/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lyuanww/ip.git completed! +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanveersingh10/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanveersingh10/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tllshan/ip.git... +Sep 26, 2023 2:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/beatricecst/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/beatricecst/ip.git (master) completed! +Sep 26, 2023 2:07:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tllshan/ip.git to complete... +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [112/478] Analyzing https://github.com/thienmy0/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/thienmy0/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/thienmy0/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yongning0310/ip.git completed! +Sep 26, 2023 2:07:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Gavino3o/ip.git... +Sep 26, 2023 2:07:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Gavino3o/ip.git to complete... +Sep 26, 2023 2:07:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cloud7050/ip.git completed! +Sep 26, 2023 2:07:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HollaG/ip.git... +Sep 26, 2023 2:07:05 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HollaG/ip.git to complete... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LoMaply/ip.git completed! -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/thienmy0/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanveersingh10/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/thienmy0/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/thienmy0/ip.git (master) completed! +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [113/478] Analyzing https://github.com/s0ngyang/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanveersingh10/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/s0ngyang/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/s0ngyang/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanveersingh10/ip.git (master) completed! +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [114/478] Analyzing https://github.com/ldinghan/ip.git (master)... +Sep 26, 2023 2:07:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ldinghan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ldinghan/ip.git (master)... +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tllshan/ip.git completed! +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cheeggered/ip.git... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cheeggered/ip.git to complete... -Sep 26, 2023 4:03:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tllshan/ip.git completed! -Sep 26, 2023 4:03:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/johnnythesnake12/ip.git (master)... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LoMaply/ip.git completed! +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xenosf/ip.git... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xenosf/ip.git to complete... -Sep 26, 2023 4:03:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/oeggy03/ip.git (master)... -Sep 26, 2023 4:03:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/johnnythesnake12/ip.git (master)... -Sep 26, 2023 4:03:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/johnnythesnake12/ip.git (master) completed! -Sep 26, 2023 4:03:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [57/478] Analyzing https://github.com/matochichap/ip.git (master)... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Gavino3o/ip.git completed! -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TehOPanas/ip.git... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HollaG/ip.git completed! -Sep 26, 2023 4:03:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/oeggy03/ip.git (master)... -Sep 26, 2023 4:03:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/oeggy03/ip.git (master) completed! -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TehOPanas/ip.git to complete... -Sep 26, 2023 4:03:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [58/478] Analyzing https://github.com/TiwKangXu/ip.git (master)... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s0ngyang/ip.git (master)... +Sep 26, 2023 2:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s0ngyang/ip.git (master)... +Sep 26, 2023 2:07:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s0ngyang/ip.git (master) completed! +Sep 26, 2023 2:07:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [115/478] Analyzing https://github.com/feifeiraindrops/ip.git (master)... +Sep 26, 2023 2:07:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/feifeiraindrops/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/feifeiraindrops/ip.git (master)... +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HollaG/ip.git completed! +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/neyapraveen/ip.git... -Sep 26, 2023 4:03:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/matochichap/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/matochichap/ip.git (master)... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:06 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/neyapraveen/ip.git to complete... -Sep 26, 2023 4:03:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TiwKangXu/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TiwKangXu/ip.git (master)... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cheeggered/ip.git completed! -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ldinghan/ip.git (master)... +Sep 26, 2023 2:07:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ldinghan/ip.git (master)... +Sep 26, 2023 2:07:06 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ldinghan/ip.git (master) completed! +Sep 26, 2023 2:07:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [116/478] Analyzing https://github.com/ryanongwx/ip.git (master)... +Sep 26, 2023 2:07:06 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ryanongwx/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ryanongwx/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TehOPanas/ip.git completed! +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/richiehx/ip.git... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/richiehx/ip.git to complete... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TehOPanas/ip.git completed! -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xenosf/ip.git completed! -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cheeggered/ip.git completed! +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AlyssaPng/ip.git... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AlyssaPng/ip.git to complete... +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xenosf/ip.git completed! +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leezhengjing/ip.git... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/leezhengjing/ip.git to complete... +Sep 26, 2023 2:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanongwx/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/neyapraveen/ip.git completed! -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanongwx/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanongwx/ip.git (master) completed! +Sep 26, 2023 2:07:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [117/478] Analyzing https://github.com/kwangthiag/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seantehds/ip.git... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/leezhengjing/ip.git to complete... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AlyssaPng/ip.git to complete... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seantehds/ip.git to complete... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kwangthiag/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kwangthiag/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/feifeiraindrops/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/feifeiraindrops/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/feifeiraindrops/ip.git (master) completed! +Sep 26, 2023 2:07:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [118/478] Analyzing https://github.com/elhy1999/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/elhy1999/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/elhy1999/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kwangthiag/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kwangthiag/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kwangthiag/ip.git (master) completed! +Sep 26, 2023 2:07:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [119/478] Analyzing https://github.com/AlainS87/ip.git (master)... +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/richiehx/ip.git completed! -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lihongguang00/ip.git... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:07 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lihongguang00/ip.git to complete... -Sep 26, 2023 4:03:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TiwKangXu/ip.git (master)... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/seantehds/ip.git completed! -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlyssaPng/ip.git completed! +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Singa-pirate/ip.git... -Sep 26, 2023 4:03:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leezhengjing/ip.git completed! -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Singa-pirate/ip.git to complete... -Sep 26, 2023 4:03:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TiwKangXu/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leezhengjing/ip.git completed! +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/songfangyl/ip.git... -Sep 26, 2023 4:03:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TiwKangXu/ip.git (master) completed! -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/songfangyl/ip.git to complete... -Sep 26, 2023 4:03:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [59/478] Analyzing https://github.com/ScarletBlanks/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlyssaPng/ip.git completed! -Sep 26, 2023 4:03:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ScarletBlanks/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ScarletBlanks/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/seantehds/ip.git completed! +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vansh284/ip.git... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/vansh284/ip.git to complete... -Sep 26, 2023 4:03:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/matochichap/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/matochichap/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/matochichap/ip.git (master) completed! -Sep 26, 2023 4:03:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/478] Analyzing https://github.com/chiayunrong/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lihongguang00/ip.git completed! -Sep 26, 2023 4:03:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chiayunrong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chiayunrong/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AlainS87/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AlainS87/ip.git (master)... +Sep 26, 2023 2:07:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/elhy1999/ip.git (master)... +Sep 26, 2023 2:07:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/elhy1999/ip.git (master)... +Sep 26, 2023 2:07:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/elhy1999/ip.git (master) completed! +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Singa-pirate/ip.git completed! +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/YeoBohShin/ip.git... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/YeoBohShin/ip.git to complete... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [120/478] Analyzing https://github.com/songgthu/ip.git (master)... +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/songfangyl/ip.git completed! -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Singa-pirate/ip.git completed! -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/YeoBohShin/ip.git to complete... +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shuenj/ip.git... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lunaroddity/ip.git... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shuenj/ip.git to complete... +Sep 26, 2023 2:07:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/songgthu/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/songgthu/ip.git (master)... +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/vansh284/ip.git completed! -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lunaroddity/ip.git... +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lunaroddity/ip.git to complete... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shuenj/ip.git to complete... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lihongguang00/ip.git completed! +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/andrechuakj/ip.git... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/andrechuakj/ip.git to complete... -Sep 26, 2023 4:03:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ScarletBlanks/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ScarletBlanks/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ScarletBlanks/ip.git (master) completed! -Sep 26, 2023 4:03:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [61/478] Analyzing https://github.com/devanshubisht/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/devanshubisht/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/devanshubisht/ip.git (master)... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/YeoBohShin/ip.git completed! -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/songgthu/ip.git (master)... +Sep 26, 2023 2:07:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/songgthu/ip.git (master)... +Sep 26, 2023 2:07:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/songgthu/ip.git (master) completed! +Sep 26, 2023 2:07:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [121/478] Analyzing https://github.com/GohTengFong/ip.git (master)... +Sep 26, 2023 2:07:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GohTengFong/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GohTengFong/ip.git (master)... +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lunaroddity/ip.git completed! +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WeeMingQing/ip.git... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/WeeMingQing/ip.git to complete... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shuenj/ip.git completed! -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/andrechuakj/ip.git completed! -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/WeeMingQing/ip.git to complete... +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aliciamichellew/ip.git... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lunaroddity/ip.git completed! -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/aliciamichellew/ip.git to complete... +Sep 26, 2023 2:07:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/andrechuakj/ip.git completed! +Sep 26, 2023 2:07:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/samuelmui8/ip.git... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/YeoBohShin/ip.git completed! +Sep 26, 2023 2:07:10 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/samuelmui8/ip.git to complete... +Sep 26, 2023 2:07:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/antonTan96/ip.git... -Sep 26, 2023 4:03:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/aliciamichellew/ip.git to complete... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/antonTan96/ip.git to complete... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/samuelmui8/ip.git to complete... -Sep 26, 2023 4:03:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chiayunrong/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chiayunrong/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chiayunrong/ip.git (master) completed! -Sep 26, 2023 4:03:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [62/478] Analyzing https://github.com/jx124/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jx124/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jx124/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GohTengFong/ip.git (master)... +Sep 26, 2023 2:07:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GohTengFong/ip.git (master)... +Sep 26, 2023 2:07:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GohTengFong/ip.git (master) completed! +Sep 26, 2023 2:07:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [122/478] Analyzing https://github.com/simbayippy/ip.git (master)... +Sep 26, 2023 2:07:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/simbayippy/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/simbayippy/ip.git (master)... +Sep 26, 2023 2:07:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/WeeMingQing/ip.git completed! -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:10 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/owenyeo/ip.git... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/samuelmui8/ip.git completed! -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/antonTan96/ip.git completed! -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:10 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/owenyeo/ip.git to complete... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/simbayippy/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aliciamichellew/ip.git completed! +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/samuelmui8/ip.git completed! +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gongg21/ip.git... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nabonitasen/ip.git... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nabonitasen/ip.git to complete... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/simbayippy/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/antonTan96/ip.git completed! +Sep 26, 2023 2:07:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/simbayippy/ip.git (master) completed! +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gongg21/ip.git to complete... -Sep 26, 2023 4:03:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/devanshubisht/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/devanshubisht/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/devanshubisht/ip.git (master) completed! -Sep 26, 2023 4:03:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [63/478] Analyzing https://github.com/Clin-lyx/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Clin-lyx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Clin-lyx/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/owenyeo/ip.git completed! -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nabonitasen/ip.git completed! -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [123/478] Analyzing https://github.com/Khaleelur-Rahman/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/erohsikivar/ip.git... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Khaleelur-Rahman/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Khaleelur-Rahman/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/erohsikivar/ip.git to complete... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gongg21/ip.git completed! -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AlainS87/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Khaleelur-Rahman/ip.git (master) completed! +Sep 26, 2023 2:07:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [124/478] Analyzing https://github.com/proto-aiken-13/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/proto-aiken-13/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/proto-aiken-13/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AlainS87/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AlainS87/ip.git (master) completed! +Sep 26, 2023 2:07:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [125/478] Analyzing https://github.com/weeweh/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nabonitasen/ip.git completed! +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/pzl111/ip.git... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/teozern1/ip.git... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/owenyeo/ip.git completed! +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/pzl111/ip.git to complete... -Sep 26, 2023 4:03:30 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/teozern1/ip.git to complete... -Sep 26, 2023 4:03:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jx124/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jx124/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jx124/ip.git (master) completed! -Sep 26, 2023 4:03:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [64/478] Analyzing https://github.com/AryanG01/ip.git (master)... -Sep 26, 2023 4:03:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AryanG01/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AryanG01/ip.git (master)... -Sep 26, 2023 4:03:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Clin-lyx/ip.git (master)... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teozern1/ip.git completed! -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/erohsikivar/ip.git completed! -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/pzl111/ip.git completed! -Sep 26, 2023 4:03:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Clin-lyx/ip.git (master)... -Sep 26, 2023 4:03:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Clin-lyx/ip.git (master) completed! -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gongg21/ip.git completed! +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/teozern1/ip.git... +Sep 26, 2023 2:07:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/weeweh/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/weeweh/ip.git (master)... +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Elijah5399/ip.git... -Sep 26, 2023 4:03:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [65/478] Analyzing https://github.com/kayabuttertoastt/ip.git (master)... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/erohsikivar/ip.git completed! +Sep 26, 2023 2:07:11 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/teozern1/ip.git to complete... +Sep 26, 2023 2:07:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Elijah5399/ip.git to complete... +Sep 26, 2023 2:07:12 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nicleongyj/ip.git... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/WinSheng1/ip.git... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nicleongyj/ip.git to complete... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/proto-aiken-13/ip.git (master)... +Sep 26, 2023 2:07:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/proto-aiken-13/ip.git (master)... +Sep 26, 2023 2:07:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/proto-aiken-13/ip.git (master) completed! +Sep 26, 2023 2:07:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [126/478] Analyzing https://github.com/bwangpj/ip.git (master)... +Sep 26, 2023 2:07:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/weeweh/ip.git (master)... +Sep 26, 2023 2:07:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bwangpj/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bwangpj/ip.git (master)... +Sep 26, 2023 2:07:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/weeweh/ip.git (master)... +Sep 26, 2023 2:07:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/weeweh/ip.git (master) completed! +Sep 26, 2023 2:07:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [127/478] Analyzing https://github.com/s-peiran/ip.git (master)... +Sep 26, 2023 2:07:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/s-peiran/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/s-peiran/ip.git (master)... +Sep 26, 2023 2:07:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teozern1/ip.git completed! +Sep 26, 2023 2:07:12 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/WinSheng1/ip.git... +Sep 26, 2023 2:07:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WinSheng1/ip.git to complete... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Elijah5399/ip.git to complete... -Sep 26, 2023 4:03:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kayabuttertoastt/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kayabuttertoastt/ip.git (master)... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aliciamichellew/ip.git completed! -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ryamgoh/ip.git... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ryamgoh/ip.git to complete... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:12 PM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nicleongyj/ip.git completed! -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WinSheng1/ip.git completed! -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner spawnCloneProcess +Sep 26, 2023 2:07:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/pzl111/ip.git completed! +Sep 26, 2023 2:07:12 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ryamgoh/ip.git... +Sep 26, 2023 2:07:12 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Elijah5399/ip.git completed! +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yucongkoo/ip.git... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chen-Kuei/ip.git... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chen-Kuei/ip.git to complete... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yucongkoo/ip.git to complete... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Elijah5399/ip.git completed! -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/conradsoon/ip.git... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/conradsoon/ip.git to complete... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ryamgoh/ip.git completed! -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/GSgiansen/ip.git... -Sep 26, 2023 4:03:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AryanG01/ip.git (master)... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/GSgiansen/ip.git to complete... -Sep 26, 2023 4:03:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chen-Kuei/ip.git completed! -Sep 26, 2023 4:03:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kayabuttertoastt/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kayabuttertoastt/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kayabuttertoastt/ip.git (master) completed! -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yucongkoo/ip.git completed! -Sep 26, 2023 4:03:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [66/478] Analyzing https://github.com/sheryew/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/et-irl/ip.git... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/marioalvaro/ip.git... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/conradsoon/ip.git completed! -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/et-irl/ip.git to complete... -Sep 26, 2023 4:03:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AryanG01/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marioalvaro/ip.git to complete... -Sep 26, 2023 4:03:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AryanG01/ip.git (master) completed! -Sep 26, 2023 4:03:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sheryew/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sheryew/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [67/478] Analyzing https://github.com/applepiofmyeye/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Seonlo99/ip.git... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Seonlo99/ip.git to complete... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GSgiansen/ip.git completed! -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/joel-foo/ip.git... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/joel-foo/ip.git to complete... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/et-irl/ip.git completed! -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Seonlo99/ip.git completed! -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marioalvaro/ip.git completed! -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tim-pipi/ip.git... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/marcellaantania/ip.git... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/brendanneojw/ip.git... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marcellaantania/ip.git to complete... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tim-pipi/ip.git to complete... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/brendanneojw/ip.git to complete... -Sep 26, 2023 4:03:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sheryew/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sheryew/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sheryew/ip.git (master) completed! -Sep 26, 2023 4:03:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [68/478] Analyzing https://github.com/jonasongg/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/applepiofmyeye/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/applepiofmyeye/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jonasongg/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jonasongg/ip.git (master)... -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/brendanneojw/ip.git completed! -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tim-pipi/ip.git completed! -Sep 26, 2023 4:03:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marcellaantania/ip.git completed! -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/li-rongzhi/ip.git... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KamiliArsyad/ip.git... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/seraphimstreets/ip.git... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/joel-foo/ip.git completed! -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/li-rongzhi/ip.git to complete... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/trgao/ip.git... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/seraphimstreets/ip.git to complete... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KamiliArsyad/ip.git to complete... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/trgao/ip.git to complete... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/li-rongzhi/ip.git completed! -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lilozz2/ip.git... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/seraphimstreets/ip.git completed! -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lilozz2/ip.git to complete... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jean-cq/ip.git... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/trgao/ip.git completed! -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jean-cq/ip.git to complete... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jedkohjk/ip.git... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jedkohjk/ip.git to complete... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KamiliArsyad/ip.git completed! -Sep 26, 2023 4:03:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jonasongg/ip.git (master)... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yytan25/ip.git... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yytan25/ip.git to complete... -Sep 26, 2023 4:03:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jonasongg/ip.git (master)... -Sep 26, 2023 4:03:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jonasongg/ip.git (master) completed! -Sep 26, 2023 4:03:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [69/478] Analyzing https://github.com/yiwen101/ip.git (master)... -Sep 26, 2023 4:03:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yiwen101/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yiwen101/ip.git (master)... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jean-cq/ip.git completed! -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ryantzr1/ip.git... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lilozz2/ip.git completed! -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ryantzr1/ip.git to complete... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/maypfv/ip.git... -Sep 26, 2023 4:03:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yytan25/ip.git completed! -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jedkohjk/ip.git completed! -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/maypfv/ip.git to complete... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TohLiYuan/ip.git... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JizhuoChen/ip.git... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TohLiYuan/ip.git to complete... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JizhuoChen/ip.git to complete... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ryantzr1/ip.git completed! -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChongWeiJie29/ip.git... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChongWeiJie29/ip.git to complete... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/maypfv/ip.git completed! -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JizhuoChen/ip.git completed! -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Goh-Li-Ting/ip.git... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kristayeo/ip.git... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Goh-Li-Ting/ip.git to complete... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kristayeo/ip.git to complete... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TohLiYuan/ip.git completed! -Sep 26, 2023 4:03:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yiwen101/ip.git (master)... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/derekjxtan/ip.git... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/derekjxtan/ip.git to complete... -Sep 26, 2023 4:03:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yiwen101/ip.git (master)... -Sep 26, 2023 4:03:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yiwen101/ip.git (master) completed! -Sep 26, 2023 4:03:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [70/478] Analyzing https://github.com/tiongMax/ip.git (master)... -Sep 26, 2023 4:03:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tiongMax/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tiongMax/ip.git (master)... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Goh-Li-Ting/ip.git completed! -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kristayeo/ip.git completed! -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shashahchk/ip.git... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChongWeiJie29/ip.git completed! -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shashahchk/ip.git to complete... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chandan8186/ip.git... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chandan8186/ip.git to complete... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alyssaongyx/ip.git... -Sep 26, 2023 4:03:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alyssaongyx/ip.git to complete... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/derekjxtan/ip.git completed! -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AndrewJanong/ip.git... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AndrewJanong/ip.git to complete... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alyssaongyx/ip.git completed! -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kailash201/ip.git... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kailash201/ip.git to complete... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chandan8186/ip.git completed! -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/laurenlim2112/ip.git... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shashahchk/ip.git completed! -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lambraydon/ip.git... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/laurenlim2112/ip.git to complete... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lambraydon/ip.git to complete... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AndrewJanong/ip.git completed! -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sk2001git/ip.git... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sk2001git/ip.git to complete... -Sep 26, 2023 4:03:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tiongMax/ip.git (master)... -Sep 26, 2023 4:03:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tiongMax/ip.git (master)... -Sep 26, 2023 4:03:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tiongMax/ip.git (master) completed! -Sep 26, 2023 4:03:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [71/478] Analyzing https://github.com/chuababyy/ip.git (master)... -Sep 26, 2023 4:03:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chuababyy/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chuababyy/ip.git (master)... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kailash201/ip.git completed! -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chonguschonguschongus/ip.git... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/laurenlim2112/ip.git completed! -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chonguschonguschongus/ip.git to complete... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lshaoqin/ip.git... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lambraydon/ip.git completed! -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lshaoqin/ip.git to complete... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/peasantbird/ip.git... -Sep 26, 2023 4:03:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/peasantbird/ip.git to complete... -Sep 26, 2023 4:03:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/applepiofmyeye/ip.git (master)... -Sep 26, 2023 4:03:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/applepiofmyeye/ip.git (master)... -Sep 26, 2023 4:03:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/applepiofmyeye/ip.git (master) completed! -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lshaoqin/ip.git completed! -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/WangCheng0116/ip.git... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/peasantbird/ip.git completed! -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/WangCheng0116/ip.git to complete... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/teozhengyang/ip.git... -Sep 26, 2023 4:03:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [72/478] Analyzing https://github.com/remuslum/ip.git (master)... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/teozhengyang/ip.git to complete... -Sep 26, 2023 4:03:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/remuslum/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/remuslum/ip.git (master)... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sk2001git/ip.git completed! -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chewjh1234/ip.git... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chewjh1234/ip.git to complete... -Sep 26, 2023 4:03:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chuababyy/ip.git (master)... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chonguschonguschongus/ip.git completed! -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/elaineshijie/ip.git... -Sep 26, 2023 4:03:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chuababyy/ip.git (master)... -Sep 26, 2023 4:03:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chuababyy/ip.git (master) completed! -Sep 26, 2023 4:03:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [73/478] Analyzing https://github.com/supermii2/ip.git (master)... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/elaineshijie/ip.git to complete... -Sep 26, 2023 4:03:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/supermii2/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/supermii2/ip.git (master)... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WangCheng0116/ip.git completed! -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lynnlow175/ip.git... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lynnlow175/ip.git to complete... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chewjh1234/ip.git completed! -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lordidiot/ip.git... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lordidiot/ip.git to complete... -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/elaineshijie/ip.git completed! -Sep 26, 2023 4:03:36 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chew01/ip.git... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chew01/ip.git to complete... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lynnlow175/ip.git completed! -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RSXIX/ip.git... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RSXIX/ip.git to complete... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lordidiot/ip.git completed! -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/juliusgambe/ip.git... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chew01/ip.git completed! -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/juliusgambe/ip.git to complete... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhonghan721/ip.git... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhonghan721/ip.git to complete... -Sep 26, 2023 4:03:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/remuslum/ip.git (master)... -Sep 26, 2023 4:03:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/remuslum/ip.git (master)... -Sep 26, 2023 4:03:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/remuslum/ip.git (master) completed! -Sep 26, 2023 4:03:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [74/478] Analyzing https://github.com/nicolengk/ip.git (master)... -Sep 26, 2023 4:03:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nicolengk/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nicolengk/ip.git (master)... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RSXIX/ip.git completed! -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/WZWren/ip.git... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/juliusgambe/ip.git completed! -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/WZWren/ip.git to complete... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/inezkok/ip.git... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/inezkok/ip.git to complete... -Sep 26, 2023 4:03:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/supermii2/ip.git (master)... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhonghan721/ip.git completed! -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wasjoe1/ip.git... -Sep 26, 2023 4:03:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wasjoe1/ip.git to complete... -Sep 26, 2023 4:03:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/supermii2/ip.git (master)... -Sep 26, 2023 4:03:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/supermii2/ip.git (master) completed! -Sep 26, 2023 4:03:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [75/478] Analyzing https://github.com/newway1814/ip.git (master)... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teozhengyang/ip.git completed! -Sep 26, 2023 4:03:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/newway1814/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/newway1814/ip.git (master)... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kokrui/ip.git... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kokrui/ip.git to complete... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WZWren/ip.git completed! -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jinyang628/ip.git... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jinyang628/ip.git to complete... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/inezkok/ip.git completed! -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nananakx-x/ip.git... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nananakx-x/ip.git to complete... -Sep 26, 2023 4:03:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicolengk/ip.git (master)... -Sep 26, 2023 4:03:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicolengk/ip.git (master)... -Sep 26, 2023 4:03:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicolengk/ip.git (master) completed! -Sep 26, 2023 4:03:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [76/478] Analyzing https://github.com/zsh-eng/ip.git (master)... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wasjoe1/ip.git completed! -Sep 26, 2023 4:03:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zsh-eng/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zsh-eng/ip.git (master)... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ylyma/ip.git... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ylyma/ip.git to complete... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kokrui/ip.git completed! -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AnnabelTing/ip.git... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AnnabelTing/ip.git to complete... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nananakx-x/ip.git completed! -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/timetraveller-123/ip.git... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/timetraveller-123/ip.git to complete... -Sep 26, 2023 4:03:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/newway1814/ip.git (master)... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AnnabelTing/ip.git completed! -Sep 26, 2023 4:03:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/newway1814/ip.git (master)... -Sep 26, 2023 4:03:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/newway1814/ip.git (master) completed! -Sep 26, 2023 4:03:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [77/478] Analyzing https://github.com/glenngnng/ip.git (master)... -Sep 26, 2023 4:03:38 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LicongHuang/ip.git... -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LicongHuang/ip.git to complete... -Sep 26, 2023 4:03:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/glenngnng/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/glenngnng/ip.git (master)... -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jinyang628/ip.git completed! -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Jweng88/ip.git... -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jweng88/ip.git to complete... -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/timetraveller-123/ip.git completed! -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/EricXiong420/ip.git... -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/EricXiong420/ip.git to complete... -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jweng88/ip.git completed! -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jovkusuma/ip.git... -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jovkusuma/ip.git to complete... -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ylyma/ip.git completed! -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bhnuka/ip.git... -Sep 26, 2023 4:03:39 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bhnuka/ip.git to complete... -Sep 26, 2023 4:03:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zsh-eng/ip.git (master)... -Sep 26, 2023 4:03:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/glenngnng/ip.git (master)... -Sep 26, 2023 4:03:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zsh-eng/ip.git (master)... -Sep 26, 2023 4:03:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zsh-eng/ip.git (master) completed! -Sep 26, 2023 4:03:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [78/478] Analyzing https://github.com/kanna-1/ip.git (master)... -Sep 26, 2023 4:03:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/glenngnng/ip.git (master)... -Sep 26, 2023 4:03:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/glenngnng/ip.git (master) completed! -Sep 26, 2023 4:03:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [79/478] Analyzing https://github.com/mingyuanc/ip.git (master)... -Sep 26, 2023 4:03:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kanna-1/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kanna-1/ip.git (master)... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jovkusuma/ip.git completed! -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/J-hta-n/ip.git... -Sep 26, 2023 4:03:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mingyuanc/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mingyuanc/ip.git (master)... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/J-hta-n/ip.git to complete... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bhnuka/ip.git completed! -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/EricXiong420/ip.git completed! -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Tim-Siu/ip.git... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yarnmengnus/ip.git... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yarnmengnus/ip.git to complete... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Tim-Siu/ip.git to complete... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/J-hta-n/ip.git completed! -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sopa301/ip.git... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Tim-Siu/ip.git completed! -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sopa301/ip.git to complete... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ngeeyonglim/ip.git... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yarnmengnus/ip.git completed! -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ngeeyonglim/ip.git to complete... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/flexibo/ip.git... -Sep 26, 2023 4:03:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/flexibo/ip.git to complete... -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sopa301/ip.git completed! -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ngeeyonglim/ip.git completed! -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ItsTYtan/ip.git... -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/javinchua/ip.git... -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ItsTYtan/ip.git to complete... -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/javinchua/ip.git to complete... -Sep 26, 2023 4:03:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mingyuanc/ip.git (master)... -Sep 26, 2023 4:03:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kanna-1/ip.git (master)... -Sep 26, 2023 4:03:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mingyuanc/ip.git (master)... -Sep 26, 2023 4:03:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mingyuanc/ip.git (master) completed! -Sep 26, 2023 4:03:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kanna-1/ip.git (master)... -Sep 26, 2023 4:03:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [80/478] Analyzing https://github.com/GlendaChong/ip.git (master)... -Sep 26, 2023 4:03:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kanna-1/ip.git (master) completed! -Sep 26, 2023 4:03:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [81/478] Analyzing https://github.com/LamJiuFong/ip.git (master)... -Sep 26, 2023 4:03:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GlendaChong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GlendaChong/ip.git (master)... -Sep 26, 2023 4:03:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LamJiuFong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LamJiuFong/ip.git (master)... -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ItsTYtan/ip.git completed! -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/amosting/ip.git... -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/javinchua/ip.git completed! -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/amosting/ip.git to complete... -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Cleon2/ip.git... -Sep 26, 2023 4:03:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Cleon2/ip.git to complete... -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/amosting/ip.git completed! -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ketweeen/ip.git... -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ketweeen/ip.git to complete... -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cleon2/ip.git completed! -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sudarshan2401/ip.git... -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sudarshan2401/ip.git to complete... -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ketweeen/ip.git completed! -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wui-hong/ip.git... -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wui-hong/ip.git to complete... -Sep 26, 2023 4:03:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GlendaChong/ip.git (master)... -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sudarshan2401/ip.git completed! -Sep 26, 2023 4:03:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LamJiuFong/ip.git (master)... -Sep 26, 2023 4:03:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GlendaChong/ip.git (master)... -Sep 26, 2023 4:03:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GlendaChong/ip.git (master) completed! -Sep 26, 2023 4:03:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [82/478] Analyzing https://github.com/starrylight99/ip.git (master)... -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Respirayson/ip.git... -Sep 26, 2023 4:03:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Respirayson/ip.git to complete... -Sep 26, 2023 4:03:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LamJiuFong/ip.git (master)... -Sep 26, 2023 4:03:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LamJiuFong/ip.git (master) completed! -Sep 26, 2023 4:03:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [83/478] Analyzing https://github.com/AustinHuang1203/ip.git (master)... -Sep 26, 2023 4:03:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/starrylight99/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/starrylight99/ip.git (master)... -Sep 26, 2023 4:03:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AustinHuang1203/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AustinHuang1203/ip.git (master)... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wui-hong/ip.git completed! -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/flexibo/ip.git completed! -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chrainx/ip.git... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shishirbychapur/ip.git... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shishirbychapur/ip.git to complete... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chrainx/ip.git to complete... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Respirayson/ip.git completed! -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sunzihan23/ip.git... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sunzihan23/ip.git to complete... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LicongHuang/ip.git completed! -Sep 26, 2023 4:03:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/starrylight99/ip.git (master)... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wj331/ip.git... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wj331/ip.git to complete... -Sep 26, 2023 4:03:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AustinHuang1203/ip.git (master)... -Sep 26, 2023 4:03:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/starrylight99/ip.git (master)... -Sep 26, 2023 4:03:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/starrylight99/ip.git (master) completed! -Sep 26, 2023 4:03:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/478] Analyzing https://github.com/seewhyjay/ip.git (master)... -Sep 26, 2023 4:03:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AustinHuang1203/ip.git (master)... -Sep 26, 2023 4:03:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AustinHuang1203/ip.git (master) completed! -Sep 26, 2023 4:03:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [85/478] Analyzing https://github.com/ruth-lim/ip.git (master)... -Sep 26, 2023 4:03:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/seewhyjay/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/seewhyjay/ip.git (master)... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shishirbychapur/ip.git completed! -Sep 26, 2023 4:03:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruth-lim/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruth-lim/ip.git (master)... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tjch-o/ip.git... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tjch-o/ip.git to complete... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sunzihan23/ip.git completed! -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/licongshen12/ip.git... -Sep 26, 2023 4:03:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/licongshen12/ip.git to complete... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wj331/ip.git completed! -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/mamayuan/ip.git... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/mamayuan/ip.git to complete... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tjch-o/ip.git completed! -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chrainx/ip.git completed! -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ong-wei-hong/ip.git... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ong-wei-hong/ip.git to complete... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tanboonkhong/ip.git... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanboonkhong/ip.git to complete... -Sep 26, 2023 4:03:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/seewhyjay/ip.git (master)... -Sep 26, 2023 4:03:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/seewhyjay/ip.git (master)... -Sep 26, 2023 4:03:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/seewhyjay/ip.git (master) completed! -Sep 26, 2023 4:03:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [86/478] Analyzing https://github.com/limzhenwy/ip.git (master)... -Sep 26, 2023 4:03:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/limzhenwy/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/limzhenwy/ip.git (master)... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/licongshen12/ip.git completed! -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cbj252/ip.git... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mamayuan/ip.git completed! -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cbj252/ip.git to complete... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AlfredBeNoel/ip.git... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AlfredBeNoel/ip.git to complete... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ong-wei-hong/ip.git completed! -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/keaganpzh/ip.git... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/keaganpzh/ip.git to complete... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanboonkhong/ip.git completed! -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ElginTZM/ip.git... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ElginTZM/ip.git to complete... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cbj252/ip.git completed! -Sep 26, 2023 4:03:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/limzhenwy/ip.git (master)... -Sep 26, 2023 4:03:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruth-lim/ip.git (master)... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlfredBeNoel/ip.git completed! -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LimJH2002/ip.git... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cmHuang777/ip.git... -Sep 26, 2023 4:03:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cmHuang777/ip.git to complete... -Sep 26, 2023 4:03:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/limzhenwy/ip.git (master)... -Sep 26, 2023 4:03:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/limzhenwy/ip.git (master) completed! -Sep 26, 2023 4:03:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [87/478] Analyzing https://github.com/zacwong2151/ip.git (master)... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LimJH2002/ip.git to complete... -Sep 26, 2023 4:03:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zacwong2151/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zacwong2151/ip.git (master)... -Sep 26, 2023 4:03:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruth-lim/ip.git (master)... -Sep 26, 2023 4:03:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruth-lim/ip.git (master) completed! -Sep 26, 2023 4:03:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [88/478] Analyzing https://github.com/xCOLOURx/ip.git (master)... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ElginTZM/ip.git completed! -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/keaganpzh/ip.git completed! -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/WeeeHung/ip.git... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xxiaoweii/ip.git... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/WeeeHung/ip.git to complete... -Sep 26, 2023 4:03:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xCOLOURx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xCOLOURx/ip.git (master)... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xxiaoweii/ip.git to complete... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cmHuang777/ip.git completed! -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LimJH2002/ip.git completed! -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rayyan35p/ip.git... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dhruvir29/ip.git... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rayyan35p/ip.git to complete... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dhruvir29/ip.git to complete... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xxiaoweii/ip.git completed! -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LinWanLeii/ip.git... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LinWanLeii/ip.git to complete... -Sep 26, 2023 4:03:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zacwong2151/ip.git (master)... -Sep 26, 2023 4:03:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zacwong2151/ip.git (master)... -Sep 26, 2023 4:03:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zacwong2151/ip.git (master) completed! -Sep 26, 2023 4:03:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [89/478] Analyzing https://github.com/Zjinnnn/ip.git (master)... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dhruvir29/ip.git completed! -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Song-Mengfei/ip.git... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rayyan35p/ip.git completed! -Sep 26, 2023 4:03:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Zjinnnn/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Zjinnnn/ip.git (master)... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jinyuan0425/ip.git... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Song-Mengfei/ip.git to complete... -Sep 26, 2023 4:03:45 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jinyuan0425/ip.git to complete... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LinWanLeii/ip.git completed! -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tiif/ip.git... -Sep 26, 2023 4:03:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xCOLOURx/ip.git (master)... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tiif/ip.git to complete... -Sep 26, 2023 4:03:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xCOLOURx/ip.git (master)... -Sep 26, 2023 4:03:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xCOLOURx/ip.git (master) completed! -Sep 26, 2023 4:03:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [90/478] Analyzing https://github.com/awhb/ip.git (master)... -Sep 26, 2023 4:03:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/awhb/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/awhb/ip.git (master)... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Song-Mengfei/ip.git completed! -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nicholascher/ip.git... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jinyuan0425/ip.git completed! -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WeeeHung/ip.git completed! -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicholascher/ip.git to complete... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tiif/ip.git completed! -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hcs1203/ip.git... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/papataco14/ip.git... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/papataco14/ip.git to complete... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KamJiaYue/ip.git... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hcs1203/ip.git to complete... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KamJiaYue/ip.git to complete... -Sep 26, 2023 4:03:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Zjinnnn/ip.git (master)... -Sep 26, 2023 4:03:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Zjinnnn/ip.git (master)... -Sep 26, 2023 4:03:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Zjinnnn/ip.git (master) completed! -Sep 26, 2023 4:03:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [91/478] Analyzing https://github.com/teoks0199/ip.git (master)... -Sep 26, 2023 4:03:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/teoks0199/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/teoks0199/ip.git (master)... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicholascher/ip.git completed! -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/NereusWB922/ip.git... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hcs1203/ip.git completed! -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/papataco14/ip.git completed! -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/NereusWB922/ip.git to complete... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PohSayKeong/ip.git... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ivyy-poison/ip.git... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PohSayKeong/ip.git to complete... -Sep 26, 2023 4:03:46 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ivyy-poison/ip.git to complete... -Sep 26, 2023 4:03:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/awhb/ip.git (master)... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KamJiaYue/ip.git completed! -Sep 26, 2023 4:03:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/awhb/ip.git (master)... -Sep 26, 2023 4:03:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/awhb/ip.git (master) completed! -Sep 26, 2023 4:03:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [92/478] Analyzing https://github.com/qz1004/ip.git (master)... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jacobcuison/ip.git... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jacobcuison/ip.git to complete... -Sep 26, 2023 4:03:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/qz1004/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/qz1004/ip.git (master)... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ivyy-poison/ip.git completed! -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ji-just-ji/ip.git... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ji-just-ji/ip.git to complete... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PohSayKeong/ip.git completed! -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NereusWB922/ip.git completed! -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kohkaijie/ip.git... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rocketninja7/ip.git... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rocketninja7/ip.git to complete... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kohkaijie/ip.git to complete... -Sep 26, 2023 4:03:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teoks0199/ip.git (master)... -Sep 26, 2023 4:03:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teoks0199/ip.git (master)... -Sep 26, 2023 4:03:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teoks0199/ip.git (master) completed! -Sep 26, 2023 4:03:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [93/478] Analyzing https://github.com/pangyyen/ip.git (master)... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jacobcuison/ip.git completed! -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zekone/ip.git... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zekone/ip.git to complete... -Sep 26, 2023 4:03:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/pangyyen/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/pangyyen/ip.git (master)... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ji-just-ji/ip.git completed! -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/markgcera/ip.git... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/markgcera/ip.git to complete... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rocketninja7/ip.git completed! -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PearlynnT/ip.git... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PearlynnT/ip.git to complete... -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zekone/ip.git completed! -Sep 26, 2023 4:03:47 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/StevenLiudw/ip.git... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/StevenLiudw/ip.git to complete... -Sep 26, 2023 4:03:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/qz1004/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/qz1004/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/qz1004/ip.git (master) completed! -Sep 26, 2023 4:03:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [94/478] Analyzing https://github.com/Mahidharah/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kohkaijie/ip.git completed! -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TeeRenJing/ip.git... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TeeRenJing/ip.git to complete... -Sep 26, 2023 4:03:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Mahidharah/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Mahidharah/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/markgcera/ip.git completed! -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PearlynnT/ip.git completed! -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/mounilsankar/ip.git... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/StevenLiudw/ip.git completed! -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dloh2236/ip.git... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zannloo/ip.git... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/mounilsankar/ip.git to complete... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zannloo/ip.git to complete... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dloh2236/ip.git to complete... -Sep 26, 2023 4:03:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pangyyen/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pangyyen/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pangyyen/ip.git (master) completed! -Sep 26, 2023 4:03:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [95/478] Analyzing https://github.com/jason-raiin/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jason-raiin/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jason-raiin/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TeeRenJing/ip.git completed! -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mounilsankar/ip.git completed! -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zannloo/ip.git completed! -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/junnengsoo/ip.git... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/freshcabbage123/ip.git... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/freshcabbage123/ip.git to complete... -Sep 26, 2023 4:03:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Mahidharah/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kokseng1/ip.git... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/junnengsoo/ip.git to complete... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kokseng1/ip.git to complete... -Sep 26, 2023 4:03:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Mahidharah/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Mahidharah/ip.git (master) completed! -Sep 26, 2023 4:03:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [96/478] Analyzing https://github.com/ravern/ip.git (master)... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dloh2236/ip.git completed! -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/itsNatTan/ip.git... -Sep 26, 2023 4:03:48 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/itsNatTan/ip.git to complete... -Sep 26, 2023 4:03:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ravern/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ravern/ip.git (master)... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/junnengsoo/ip.git completed! -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kokseng1/ip.git completed! -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tjingsheng/ip.git... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/freshcabbage123/ip.git completed! -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ZD292/ip.git... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/itsNatTan/ip.git completed! -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tjingsheng/ip.git to complete... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ZD292/ip.git to complete... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alientian/ip.git... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alientian/ip.git to complete... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/frrrrry/ip.git... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/frrrrry/ip.git to complete... -Sep 26, 2023 4:03:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jason-raiin/ip.git (master)... -Sep 26, 2023 4:03:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jason-raiin/ip.git (master)... -Sep 26, 2023 4:03:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jason-raiin/ip.git (master) completed! -Sep 26, 2023 4:03:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [97/478] Analyzing https://github.com/bobscodedump/ip.git (master)... -Sep 26, 2023 4:03:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bobscodedump/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bobscodedump/ip.git (master)... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ZD292/ip.git completed! -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alientian/ip.git completed! -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wanghejin/ip.git... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wanghejin/ip.git to complete... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/MagnificentCreature/ip.git... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/frrrrry/ip.git completed! -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/MagnificentCreature/ip.git to complete... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SungMatt/ip.git... -Sep 26, 2023 4:03:49 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SungMatt/ip.git to complete... -Sep 26, 2023 4:03:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ravern/ip.git (master)... -Sep 26, 2023 4:03:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ravern/ip.git (master)... -Sep 26, 2023 4:03:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ravern/ip.git (master) completed! -Sep 26, 2023 4:03:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [98/478] Analyzing https://github.com/techjay-c/ip.git (master)... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tjingsheng/ip.git completed! -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/andrefoo/ip.git... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/andrefoo/ip.git to complete... -Sep 26, 2023 4:03:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/techjay-c/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/techjay-c/ip.git (master)... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/MagnificentCreature/ip.git completed! -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tohpinren/ip.git... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tohpinren/ip.git to complete... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wanghejin/ip.git completed! -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/XihuaZ/ip.git... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/XihuaZ/ip.git to complete... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/andrefoo/ip.git completed! -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xavierpok/ip.git... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xavierpok/ip.git to complete... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tohpinren/ip.git completed! -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bkjwjason/ip.git... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bkjwjason/ip.git to complete... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/XihuaZ/ip.git completed! -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Choonyan02/ip.git... -Sep 26, 2023 4:03:50 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Choonyan02/ip.git to complete... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xavierpok/ip.git completed! -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/aarontxz/ip.git... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/aarontxz/ip.git to complete... -Sep 26, 2023 4:03:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bobscodedump/ip.git (master)... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SungMatt/ip.git completed! -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jianyangg/ip.git... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bkjwjason/ip.git completed! -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tayian/ip.git... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jianyangg/ip.git to complete... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tayian/ip.git to complete... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Choonyan02/ip.git completed! -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wnchan/ip.git... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wnchan/ip.git to complete... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aarontxz/ip.git completed! -Sep 26, 2023 4:03:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bobscodedump/ip.git (master)... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Jweewee/ip.git... -Sep 26, 2023 4:03:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bobscodedump/ip.git (master) completed! -Sep 26, 2023 4:03:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [99/478] Analyzing https://github.com/ryanozx/ip.git (master)... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jweewee/ip.git to complete... -Sep 26, 2023 4:03:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ryanozx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ryanozx/ip.git (master)... -Sep 26, 2023 4:03:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/techjay-c/ip.git (master)... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jianyangg/ip.git completed! -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cyaoxuan/ip.git... -Sep 26, 2023 4:03:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/techjay-c/ip.git (master)... -Sep 26, 2023 4:03:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/techjay-c/ip.git (master) completed! -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cyaoxuan/ip.git to complete... -Sep 26, 2023 4:03:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [100/478] Analyzing https://github.com/LuahJunYang/ip.git (master)... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tayian/ip.git completed! -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/anthonytamzil/ip.git... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/anthonytamzil/ip.git to complete... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wnchan/ip.git completed! -Sep 26, 2023 4:03:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LuahJunYang/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LuahJunYang/ip.git (master)... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/CelestineTan03/ip.git... -Sep 26, 2023 4:03:51 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/CelestineTan03/ip.git to complete... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/anthonytamzil/ip.git completed! -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/saltedfishxx/ip.git... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/saltedfishxx/ip.git to complete... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cyaoxuan/ip.git completed! -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/CelestineTan03/ip.git completed! -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/euchangxian/ip.git... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AlagappanRa/ip.git... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/euchangxian/ip.git to complete... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AlagappanRa/ip.git to complete... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jweewee/ip.git completed! -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ken-Lai/ip.git... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ken-Lai/ip.git to complete... -Sep 26, 2023 4:03:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LuahJunYang/ip.git (master)... -Sep 26, 2023 4:03:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LuahJunYang/ip.git (master)... -Sep 26, 2023 4:03:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LuahJunYang/ip.git (master) completed! -Sep 26, 2023 4:03:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [101/478] Analyzing https://github.com/HEEaZ/ip.git (master)... -Sep 26, 2023 4:03:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanozx/ip.git (master)... -Sep 26, 2023 4:03:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/HEEaZ/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/HEEaZ/ip.git (master)... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/saltedfishxx/ip.git completed! -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlagappanRa/ip.git completed! -Sep 26, 2023 4:03:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanozx/ip.git (master)... -Sep 26, 2023 4:03:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanozx/ip.git (master) completed! -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jamz903/ip.git... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/itssisi/ip.git... -Sep 26, 2023 4:03:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [102/478] Analyzing https://github.com/nixonwidjaja/ip.git (master)... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ken-Lai/ip.git completed! -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/itssisi/ip.git to complete... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kevin-Liusx/ip.git... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jamz903/ip.git to complete... -Sep 26, 2023 4:03:52 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kevin-Liusx/ip.git to complete... -Sep 26, 2023 4:03:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nixonwidjaja/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nixonwidjaja/ip.git (master)... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/euchangxian/ip.git completed! -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Propene-Dan/ip.git... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Propene-Dan/ip.git to complete... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/itssisi/ip.git completed! -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChuanXinNg/ip.git... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChuanXinNg/ip.git to complete... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jamz903/ip.git completed! -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kenvynKwek/ip.git... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kenvynKwek/ip.git to complete... -Sep 26, 2023 4:03:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/HEEaZ/ip.git (master)... -Sep 26, 2023 4:03:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HEEaZ/ip.git (master)... -Sep 26, 2023 4:03:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HEEaZ/ip.git (master) completed! -Sep 26, 2023 4:03:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [103/478] Analyzing https://github.com/dom-buri/ip.git (master)... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kevin-Liusx/ip.git completed! -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ruizhi2001/ip.git... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Propene-Dan/ip.git completed! -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ruizhi2001/ip.git to complete... -Sep 26, 2023 4:03:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dom-buri/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dom-buri/ip.git (master)... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/prawnzyy/ip.git... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/prawnzyy/ip.git to complete... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChuanXinNg/ip.git completed! -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/saraozn/ip.git... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kenvynKwek/ip.git completed! -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/saraozn/ip.git to complete... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nicholastng010601/ip.git... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicholastng010601/ip.git to complete... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/prawnzyy/ip.git completed! -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DistractedCat/ip.git... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ruizhi2001/ip.git completed! -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yezkez10/ip.git... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DistractedCat/ip.git to complete... -Sep 26, 2023 4:03:53 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yezkez10/ip.git to complete... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/saraozn/ip.git completed! -Sep 26, 2023 4:03:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nixonwidjaja/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/revdrag/ip.git... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/revdrag/ip.git to complete... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicholastng010601/ip.git completed! -Sep 26, 2023 4:03:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nixonwidjaja/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nixonwidjaja/ip.git (master) completed! -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alvinlim277/ip.git... -Sep 26, 2023 4:03:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [104/478] Analyzing https://github.com/tiongjjyi/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alvinlim277/ip.git to complete... -Sep 26, 2023 4:03:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tiongjjyi/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tiongjjyi/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yezkez10/ip.git completed! -Sep 26, 2023 4:03:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dom-buri/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JasonRay168/ip.git... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DistractedCat/ip.git completed! -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JasonRay168/ip.git to complete... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/billieboy7/ip.git... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/billieboy7/ip.git to complete... -Sep 26, 2023 4:03:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dom-buri/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dom-buri/ip.git (master) completed! -Sep 26, 2023 4:03:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [105/478] Analyzing https://github.com/fuyiqiao/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/fuyiqiao/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/fuyiqiao/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/revdrag/ip.git completed! -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alvinlim277/ip.git completed! -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jannnice/ip.git... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jannnice/ip.git to complete... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/evanyan13/ip.git... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/evanyan13/ip.git to complete... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JasonRay168/ip.git completed! -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/samuelim01/ip.git... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/billieboy7/ip.git completed! -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/samuelim01/ip.git to complete... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dinde2004/ip.git... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dinde2004/ip.git to complete... -Sep 26, 2023 4:03:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tiongjjyi/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tiongjjyi/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tiongjjyi/ip.git (master) completed! -Sep 26, 2023 4:03:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [106/478] Analyzing https://github.com/Vanessamae23/ip.git (master)... -Sep 26, 2023 4:03:54 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jannnice/ip.git completed! -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/seanpzk/ip.git... -Sep 26, 2023 4:03:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Vanessamae23/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Vanessamae23/ip.git (master)... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/seanpzk/ip.git to complete... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/samuelim01/ip.git completed! -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KumChaiYin/ip.git... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dinde2004/ip.git completed! -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lsyurea/ip.git... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KumChaiYin/ip.git to complete... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lsyurea/ip.git to complete... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/evanyan13/ip.git completed! -Sep 26, 2023 4:03:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/fuyiqiao/ip.git (master)... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Sasmik23/ip.git... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Sasmik23/ip.git to complete... -Sep 26, 2023 4:03:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/fuyiqiao/ip.git (master)... -Sep 26, 2023 4:03:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/fuyiqiao/ip.git (master) completed! -Sep 26, 2023 4:03:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [107/478] Analyzing https://github.com/tanshiyu1999/ip.git (master)... -Sep 26, 2023 4:03:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanshiyu1999/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanshiyu1999/ip.git (master)... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/seanpzk/ip.git completed! -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/geraldngjx/ip.git... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/geraldngjx/ip.git to complete... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lsyurea/ip.git completed! -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lululwtv/ip.git... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lululwtv/ip.git to complete... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KumChaiYin/ip.git completed! -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Sasmik23/ip.git completed! -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/garylow2001/ip.git... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/leontan2/ip.git... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/leontan2/ip.git to complete... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/garylow2001/ip.git to complete... -Sep 26, 2023 4:03:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Vanessamae23/ip.git (master)... -Sep 26, 2023 4:03:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Vanessamae23/ip.git (master)... -Sep 26, 2023 4:03:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Vanessamae23/ip.git (master) completed! -Sep 26, 2023 4:03:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [108/478] Analyzing https://github.com/spatuly/ip.git (master)... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/geraldngjx/ip.git completed! -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wamps-jp/ip.git... -Sep 26, 2023 4:03:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/spatuly/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/spatuly/ip.git (master)... -Sep 26, 2023 4:03:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wamps-jp/ip.git to complete... -Sep 26, 2023 4:03:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanshiyu1999/ip.git (master)... -Sep 26, 2023 4:03:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanshiyu1999/ip.git (master)... -Sep 26, 2023 4:03:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanshiyu1999/ip.git (master) completed! -Sep 26, 2023 4:03:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [109/478] Analyzing https://github.com/Kb-Tay/ip.git (master)... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/garylow2001/ip.git completed! -Sep 26, 2023 4:03:56 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kb-Tay/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kb-Tay/ip.git (master)... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dickongwd/ip.git... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leontan2/ip.git completed! -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dickongwd/ip.git to complete... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jacksonyuan256/ip.git... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jacksonyuan256/ip.git to complete... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wamps-jp/ip.git completed! -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/suryanshkushwaha/ip.git... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/suryanshkushwaha/ip.git to complete... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dickongwd/ip.git completed! -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jacksonyuan256/ip.git completed! -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wr1159/ip.git... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Nauxe/ip.git... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wr1159/ip.git to complete... -Sep 26, 2023 4:03:56 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Nauxe/ip.git to complete... -Sep 26, 2023 4:03:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/spatuly/ip.git (master)... -Sep 26, 2023 4:03:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/spatuly/ip.git (master)... -Sep 26, 2023 4:03:56 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/spatuly/ip.git (master) completed! -Sep 26, 2023 4:03:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [110/478] Analyzing https://github.com/beatricecst/ip.git (master)... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Nauxe/ip.git completed! -Sep 26, 2023 4:03:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/beatricecst/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/beatricecst/ip.git (master)... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yyyaohhh/ip.git... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wr1159/ip.git completed! -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yyyaohhh/ip.git to complete... -Sep 26, 2023 4:03:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kb-Tay/ip.git (master)... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhanyang01/ip.git... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/suryanshkushwaha/ip.git completed! -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhanyang01/ip.git to complete... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/czhiruo/ip.git... -Sep 26, 2023 4:03:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kb-Tay/ip.git (master)... -Sep 26, 2023 4:03:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kb-Tay/ip.git (master) completed! -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/czhiruo/ip.git to complete... -Sep 26, 2023 4:03:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [111/478] Analyzing https://github.com/tanveersingh10/ip.git (master)... -Sep 26, 2023 4:03:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanveersingh10/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanveersingh10/ip.git (master)... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yyyaohhh/ip.git completed! -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/victorpengmx/ip.git... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/czhiruo/ip.git completed! -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/victorpengmx/ip.git to complete... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/longnguyentan/ip.git... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhanyang01/ip.git completed! -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/longnguyentan/ip.git to complete... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Cikguseven/ip.git... -Sep 26, 2023 4:03:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Cikguseven/ip.git to complete... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/victorpengmx/ip.git completed! -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Eola-Z/ip.git... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Eola-Z/ip.git to complete... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/longnguyentan/ip.git completed! -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jibtaf/ip.git... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jibtaf/ip.git to complete... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cikguseven/ip.git completed! -Sep 26, 2023 4:03:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/beatricecst/ip.git (master)... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lipwei1808/ip.git... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lipwei1808/ip.git to complete... -Sep 26, 2023 4:03:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/beatricecst/ip.git (master)... -Sep 26, 2023 4:03:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/beatricecst/ip.git (master) completed! -Sep 26, 2023 4:03:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [112/478] Analyzing https://github.com/thienmy0/ip.git (master)... -Sep 26, 2023 4:03:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanveersingh10/ip.git (master)... -Sep 26, 2023 4:03:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/thienmy0/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/thienmy0/ip.git (master)... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Eola-Z/ip.git completed! -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Mohammed-Faizzzz/ip.git... -Sep 26, 2023 4:03:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanveersingh10/ip.git (master)... -Sep 26, 2023 4:03:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanveersingh10/ip.git (master) completed! -Sep 26, 2023 4:03:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [113/478] Analyzing https://github.com/s0ngyang/ip.git (master)... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Mohammed-Faizzzz/ip.git to complete... -Sep 26, 2023 4:03:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/s0ngyang/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/s0ngyang/ip.git (master)... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jibtaf/ip.git completed! -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dylkaw/ip.git... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dylkaw/ip.git to complete... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lipwei1808/ip.git completed! -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nikele2001/ip.git... -Sep 26, 2023 4:03:58 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nikele2001/ip.git to complete... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Mohammed-Faizzzz/ip.git completed! -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DeltonCheng/ip.git... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DeltonCheng/ip.git to complete... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dylkaw/ip.git completed! -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChangruHenryQian/ip.git... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChangruHenryQian/ip.git to complete... -Sep 26, 2023 4:03:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s0ngyang/ip.git (master)... -Sep 26, 2023 4:03:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/thienmy0/ip.git (master)... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lululwtv/ip.git completed! -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nikele2001/ip.git completed! -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/craigtonlian/ip.git... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/craigtonlian/ip.git to complete... -Sep 26, 2023 4:03:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s0ngyang/ip.git (master)... -Sep 26, 2023 4:03:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s0ngyang/ip.git (master) completed! -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruo-x/ip.git... -Sep 26, 2023 4:03:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [114/478] Analyzing https://github.com/ldinghan/ip.git (master)... -Sep 26, 2023 4:03:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/thienmy0/ip.git (master)... -Sep 26, 2023 4:03:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/thienmy0/ip.git (master) completed! -Sep 26, 2023 4:03:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [115/478] Analyzing https://github.com/feifeiraindrops/ip.git (master)... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ruo-x/ip.git to complete... -Sep 26, 2023 4:03:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ldinghan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ldinghan/ip.git (master)... -Sep 26, 2023 4:03:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/feifeiraindrops/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:03:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/feifeiraindrops/ip.git (master)... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DeltonCheng/ip.git completed! -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/iantsaii/ip.git... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/iantsaii/ip.git to complete... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChangruHenryQian/ip.git completed! -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wjacobw/ip.git... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wjacobw/ip.git to complete... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/craigtonlian/ip.git completed! -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/angkyakdifp/ip.git... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/angkyakdifp/ip.git to complete... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/iantsaii/ip.git completed! -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/brein62/ip.git... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/brein62/ip.git to complete... -Sep 26, 2023 4:03:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wjacobw/ip.git completed! -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nicrandomlee/ip.git... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicrandomlee/ip.git to complete... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/angkyakdifp/ip.git completed! -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruo-x/ip.git completed! -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Bryan-Goh/ip.git... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kiatkat/ip.git... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Bryan-Goh/ip.git to complete... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kiatkat/ip.git to complete... -Sep 26, 2023 4:04:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ldinghan/ip.git (master)... -Sep 26, 2023 4:04:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/feifeiraindrops/ip.git (master)... -Sep 26, 2023 4:04:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ldinghan/ip.git (master)... -Sep 26, 2023 4:04:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ldinghan/ip.git (master) completed! -Sep 26, 2023 4:04:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [116/478] Analyzing https://github.com/ryanongwx/ip.git (master)... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/brein62/ip.git completed! -Sep 26, 2023 4:04:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/feifeiraindrops/ip.git (master)... -Sep 26, 2023 4:04:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/feifeiraindrops/ip.git (master) completed! -Sep 26, 2023 4:04:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [117/478] Analyzing https://github.com/kwangthiag/ip.git (master)... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/MadLamprey/ip.git... -Sep 26, 2023 4:04:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ryanongwx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ryanongwx/ip.git (master)... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/MadLamprey/ip.git to complete... -Sep 26, 2023 4:04:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kwangthiag/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kwangthiag/ip.git (master)... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kiatkat/ip.git completed! -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bryan-Goh/ip.git completed! -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xyT-T/ip.git... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xyT-T/ip.git to complete... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jiakai-17/ip.git... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jiakai-17/ip.git to complete... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicrandomlee/ip.git completed! -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nreHieW/ip.git... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nreHieW/ip.git to complete... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/MadLamprey/ip.git completed! -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nathanielcalimag/ip.git... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nathanielcalimag/ip.git to complete... -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jiakai-17/ip.git completed! -Sep 26, 2023 4:04:00 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Saezenn/ip.git... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Saezenn/ip.git to complete... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xyT-T/ip.git completed! -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nreHieW/ip.git completed! -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jellywaiyan/ip.git... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/marquestye/ip.git... -Sep 26, 2023 4:04:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanongwx/ip.git (master)... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jellywaiyan/ip.git to complete... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marquestye/ip.git to complete... -Sep 26, 2023 4:04:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanongwx/ip.git (master)... -Sep 26, 2023 4:04:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanongwx/ip.git (master) completed! -Sep 26, 2023 4:04:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [118/478] Analyzing https://github.com/elhy1999/ip.git (master)... -Sep 26, 2023 4:04:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/elhy1999/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/elhy1999/ip.git (master)... -Sep 26, 2023 4:04:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kwangthiag/ip.git (master)... -Sep 26, 2023 4:04:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kwangthiag/ip.git (master)... -Sep 26, 2023 4:04:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kwangthiag/ip.git (master) completed! -Sep 26, 2023 4:04:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [119/478] Analyzing https://github.com/songgthu/ip.git (master)... -Sep 26, 2023 4:04:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/songgthu/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/songgthu/ip.git (master)... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nathanielcalimag/ip.git completed! -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Saezenn/ip.git completed! -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Tang-Moyan/ip.git... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DonovanJJ/ip.git... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jellywaiyan/ip.git completed! -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Tang-Moyan/ip.git to complete... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Sebtey/ip.git... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DonovanJJ/ip.git to complete... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marquestye/ip.git completed! -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rionshocker/ip.git... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Sebtey/ip.git to complete... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rionshocker/ip.git to complete... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DonovanJJ/ip.git completed! -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tyouwei/ip.git... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tyouwei/ip.git to complete... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Tang-Moyan/ip.git completed! -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Blizzeracz/ip.git... -Sep 26, 2023 4:04:01 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Blizzeracz/ip.git to complete... -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/songgthu/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/songgthu/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/songgthu/ip.git (master) completed! -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [120/478] Analyzing https://github.com/GohTengFong/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GohTengFong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GohTengFong/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tyouwei/ip.git completed! -Sep 26, 2023 4:04:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rionshocker/ip.git completed! -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/elhy1999/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Blizzeracz/ip.git completed! -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/elhy1999/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/elhy1999/ip.git (master) completed! -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [121/478] Analyzing https://github.com/simbayippy/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/simbayippy/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/simbayippy/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GohTengFong/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GohTengFong/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GohTengFong/ip.git (master) completed! -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [122/478] Analyzing https://github.com/Khaleelur-Rahman/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Khaleelur-Rahman/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Khaleelur-Rahman/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/simbayippy/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/simbayippy/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/simbayippy/ip.git (master) completed! -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [123/478] Analyzing https://github.com/bwangpj/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bwangpj/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bwangpj/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Sebtey/ip.git completed! -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Khaleelur-Rahman/ip.git (master) completed! -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [124/478] Analyzing https://github.com/proto-aiken-13/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bwangpj/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bwangpj/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bwangpj/ip.git (master) completed! -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/proto-aiken-13/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/proto-aiken-13/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [125/478] Analyzing https://github.com/weeweh/ip.git (master)... -Sep 26, 2023 4:04:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/weeweh/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/weeweh/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/weeweh/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/weeweh/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/weeweh/ip.git (master) completed! -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [126/478] Analyzing https://github.com/s-peiran/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/proto-aiken-13/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/s-peiran/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/s-peiran/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/proto-aiken-13/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/proto-aiken-13/ip.git (master) completed! -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [127/478] Analyzing https://github.com/jylow/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jylow/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jylow/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s-peiran/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s-peiran/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s-peiran/ip.git (master) completed! -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chen-Kuei/ip.git... +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ryamgoh/ip.git to complete... +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chen-Kuei/ip.git to complete... +Sep 26, 2023 2:07:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bwangpj/ip.git (master)... +Sep 26, 2023 2:07:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bwangpj/ip.git (master)... +Sep 26, 2023 2:07:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bwangpj/ip.git (master) completed! +Sep 26, 2023 2:07:13 PM reposense.report.ReportGenerator analyzeRepos INFO: [128/478] Analyzing https://github.com/lawruixi/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:13 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lawruixi/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lawruixi/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s-peiran/ip.git (master)... +Sep 26, 2023 2:07:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s-peiran/ip.git (master)... +Sep 26, 2023 2:07:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s-peiran/ip.git (master) completed! +Sep 26, 2023 2:07:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [129/478] Analyzing https://github.com/jylow/ip.git (master)... +Sep 26, 2023 2:07:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jylow/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jylow/ip.git (master)... +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WinSheng1/ip.git completed! +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/conradsoon/ip.git... +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/conradsoon/ip.git to complete... +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chen-Kuei/ip.git completed! +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ryamgoh/ip.git completed! +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yucongkoo/ip.git completed! +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/GSgiansen/ip.git... +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/et-irl/ip.git... +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/GSgiansen/ip.git to complete... +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/marioalvaro/ip.git... +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/et-irl/ip.git to complete... +Sep 26, 2023 2:07:13 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marioalvaro/ip.git to complete... +Sep 26, 2023 2:07:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jylow/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jylow/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jylow/ip.git (master) completed! -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [129/478] Analyzing https://github.com/AlainS87/ip.git (master)... -Sep 26, 2023 4:04:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AlainS87/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AlainS87/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lawruixi/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jylow/ip.git (master)... +Sep 26, 2023 2:07:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lawruixi/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lawruixi/ip.git (master) completed! -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jylow/ip.git (master) completed! +Sep 26, 2023 2:07:14 PM reposense.report.ReportGenerator analyzeRepos INFO: [130/478] Analyzing https://github.com/JeremyYong128/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lawruixi/ip.git (master) completed! +Sep 26, 2023 2:07:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [131/478] Analyzing https://github.com/brandon-nam/ip.git (master)... +Sep 26, 2023 2:07:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/brandon-nam/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/brandon-nam/ip.git (master)... +Sep 26, 2023 2:07:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JeremyYong128/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JeremyYong128/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JeremyYong128/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JeremyYong128/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:14 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JeremyYong128/ip.git (master) completed! -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [131/478] Analyzing https://github.com/brandon-nam/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/brandon-nam/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/brandon-nam/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [132/478] Analyzing https://github.com/Leb14/ip.git (master)... +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/et-irl/ip.git completed! +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marioalvaro/ip.git completed! +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Seonlo99/ip.git... +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Seonlo99/ip.git to complete... +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/joel-foo/ip.git... +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/joel-foo/ip.git to complete... +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GSgiansen/ip.git completed! +Sep 26, 2023 2:07:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Leb14/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Leb14/ip.git (master)... +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tim-pipi/ip.git... +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/conradsoon/ip.git completed! +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tim-pipi/ip.git to complete... +Sep 26, 2023 2:07:14 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/marcellaantania/ip.git... +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marcellaantania/ip.git to complete... +Sep 26, 2023 2:07:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/brandon-nam/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/brandon-nam/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:15 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/brandon-nam/ip.git (master) completed! -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [132/478] Analyzing https://github.com/LHeng1/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [133/478] Analyzing https://github.com/LHeng1/ip.git (master)... +Sep 26, 2023 2:07:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LHeng1/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LHeng1/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AlainS87/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AlainS87/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AlainS87/ip.git (master) completed! -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [133/478] Analyzing https://github.com/Leb14/ip.git (master)... -Sep 26, 2023 4:04:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Leb14/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Leb14/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Seonlo99/ip.git completed! +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/joel-foo/ip.git completed! +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/brendanneojw/ip.git... +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tim-pipi/ip.git completed! +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/brendanneojw/ip.git to complete... +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/li-rongzhi/ip.git... +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/li-rongzhi/ip.git to complete... +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KamiliArsyad/ip.git... +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marcellaantania/ip.git completed! +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KamiliArsyad/ip.git to complete... +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/seraphimstreets/ip.git... +Sep 26, 2023 2:07:15 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/seraphimstreets/ip.git to complete... +Sep 26, 2023 2:07:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Leb14/ip.git (master)... +Sep 26, 2023 2:07:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LHeng1/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Leb14/ip.git (master)... +Sep 26, 2023 2:07:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LHeng1/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:16 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LHeng1/ip.git (master) completed! -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [134/478] Analyzing https://github.com/s-kybound/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/s-kybound/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/s-kybound/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Leb14/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Leb14/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [134/478] Analyzing https://github.com/B-enguin/ip.git (master)... +Sep 26, 2023 2:07:16 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Leb14/ip.git (master) completed! -Sep 26, 2023 4:04:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s-kybound/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [135/478] Analyzing https://github.com/B-enguin/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s-kybound/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s-kybound/ip.git (master) completed! -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [136/478] Analyzing https://github.com/wesho1107/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [135/478] Analyzing https://github.com/s-kybound/ip.git (master)... +Sep 26, 2023 2:07:16 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/B-enguin/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/B-enguin/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wesho1107/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wesho1107/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wesho1107/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:16 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/s-kybound/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/s-kybound/ip.git (master)... +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/brendanneojw/ip.git completed! +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/trgao/ip.git... +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/trgao/ip.git to complete... +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/seraphimstreets/ip.git completed! +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/li-rongzhi/ip.git completed! +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lilozz2/ip.git... +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jean-cq/ip.git... +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lilozz2/ip.git to complete... +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jean-cq/ip.git to complete... +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KamiliArsyad/ip.git completed! +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jedkohjk/ip.git... +Sep 26, 2023 2:07:16 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jedkohjk/ip.git to complete... +Sep 26, 2023 2:07:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/B-enguin/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wesho1107/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s-kybound/ip.git (master)... +Sep 26, 2023 2:07:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/B-enguin/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wesho1107/ip.git (master) completed! -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:17 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/B-enguin/ip.git (master) completed! -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s-kybound/ip.git (master)... +Sep 26, 2023 2:07:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [136/478] Analyzing https://github.com/wesho1107/ip.git (master)... +Sep 26, 2023 2:07:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s-kybound/ip.git (master) completed! +Sep 26, 2023 2:07:17 PM reposense.report.ReportGenerator analyzeRepos INFO: [137/478] Analyzing https://github.com/yihfei/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [138/478] Analyzing https://github.com/dlathyun/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wesho1107/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wesho1107/ip.git (master)... +Sep 26, 2023 2:07:17 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yihfei/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yihfei/ip.git (master)... -Sep 26, 2023 4:04:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dlathyun/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dlathyun/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/trgao/ip.git completed! +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yytan25/ip.git... +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lilozz2/ip.git completed! +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yytan25/ip.git to complete... +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ryantzr1/ip.git... +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ryantzr1/ip.git to complete... +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jean-cq/ip.git completed! +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/maypfv/ip.git... +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/maypfv/ip.git to complete... +Sep 26, 2023 2:07:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yihfei/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yihfei/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:17 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yihfei/ip.git (master) completed! -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [139/478] Analyzing https://github.com/AaronJT1/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jedkohjk/ip.git completed! +Sep 26, 2023 2:07:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [138/478] Analyzing https://github.com/AaronJT1/ip.git (master)... +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TohLiYuan/ip.git... +Sep 26, 2023 2:07:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wesho1107/ip.git (master)... +Sep 26, 2023 2:07:17 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TohLiYuan/ip.git to complete... +Sep 26, 2023 2:07:17 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AaronJT1/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AaronJT1/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dlathyun/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dlathyun/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dlathyun/ip.git (master) completed! -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [140/478] Analyzing https://github.com/ricketytoc/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ricketytoc/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ricketytoc/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wesho1107/ip.git (master)... +Sep 26, 2023 2:07:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wesho1107/ip.git (master) completed! +Sep 26, 2023 2:07:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [139/478] Analyzing https://github.com/dlathyun/ip.git (master)... +Sep 26, 2023 2:07:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dlathyun/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dlathyun/ip.git (master)... +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yytan25/ip.git completed! +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JizhuoChen/ip.git... +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ryantzr1/ip.git completed! +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JizhuoChen/ip.git to complete... +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChongWeiJie29/ip.git... +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/maypfv/ip.git completed! +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChongWeiJie29/ip.git to complete... +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Goh-Li-Ting/ip.git... +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Goh-Li-Ting/ip.git to complete... +Sep 26, 2023 2:07:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AaronJT1/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AaronJT1/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:18 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AaronJT1/ip.git (master) completed! -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [141/478] Analyzing https://github.com/Angelyxx/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [140/478] Analyzing https://github.com/Angelyxx/ip.git (master)... +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TohLiYuan/ip.git completed! +Sep 26, 2023 2:07:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Angelyxx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Angelyxx/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ricketytoc/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ricketytoc/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ricketytoc/ip.git (master) completed! -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [142/478] Analyzing https://github.com/SinhaVedant/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kristayeo/ip.git... +Sep 26, 2023 2:07:18 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kristayeo/ip.git to complete... +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JizhuoChen/ip.git completed! +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/derekjxtan/ip.git... +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/derekjxtan/ip.git to complete... +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Goh-Li-Ting/ip.git completed! +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChongWeiJie29/ip.git completed! +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shashahchk/ip.git... +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chandan8186/ip.git... +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shashahchk/ip.git to complete... +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chandan8186/ip.git to complete... +Sep 26, 2023 2:07:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Angelyxx/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kristayeo/ip.git completed! +Sep 26, 2023 2:07:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Angelyxx/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SinhaVedant/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SinhaVedant/ip.git (master)... -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alyssaongyx/ip.git... +Sep 26, 2023 2:07:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dlathyun/ip.git (master)... +Sep 26, 2023 2:07:19 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Angelyxx/ip.git (master) completed! -Sep 26, 2023 4:04:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [143/478] Analyzing https://github.com/jingting1412/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [141/478] Analyzing https://github.com/ricketytoc/ip.git (master)... +Sep 26, 2023 2:07:19 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alyssaongyx/ip.git to complete... +Sep 26, 2023 2:07:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dlathyun/ip.git (master)... +Sep 26, 2023 2:07:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ricketytoc/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ricketytoc/ip.git (master)... +Sep 26, 2023 2:07:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dlathyun/ip.git (master) completed! +Sep 26, 2023 2:07:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [142/478] Analyzing https://github.com/jingting1412/ip.git (master)... +Sep 26, 2023 2:07:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jingting1412/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jingting1412/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SinhaVedant/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SinhaVedant/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SinhaVedant/ip.git (master) completed! -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [144/478] Analyzing https://github.com/jordankanghm/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jordankanghm/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jordankanghm/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/derekjxtan/ip.git completed! +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shashahchk/ip.git completed! +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chandan8186/ip.git completed! +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AndrewJanong/ip.git... +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kailash201/ip.git... +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AndrewJanong/ip.git to complete... +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kailash201/ip.git to complete... +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/laurenlim2112/ip.git... +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/laurenlim2112/ip.git to complete... +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alyssaongyx/ip.git completed! +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lambraydon/ip.git... +Sep 26, 2023 2:07:20 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lambraydon/ip.git to complete... +Sep 26, 2023 2:07:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jingting1412/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ricketytoc/ip.git (master)... +Sep 26, 2023 2:07:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jingting1412/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ricketytoc/ip.git (master)... +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jingting1412/ip.git (master) completed! -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [145/478] Analyzing https://github.com/adhigop13/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [143/478] Analyzing https://github.com/SinhaVedant/ip.git (master)... +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ricketytoc/ip.git (master) completed! +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [144/478] Analyzing https://github.com/adhigop13/ip.git (master)... +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SinhaVedant/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SinhaVedant/ip.git (master)... +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/adhigop13/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/adhigop13/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SinhaVedant/ip.git (master)... +Sep 26, 2023 2:07:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SinhaVedant/ip.git (master)... +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SinhaVedant/ip.git (master) completed! +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [145/478] Analyzing https://github.com/jordankanghm/ip.git (master)... +Sep 26, 2023 2:07:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/adhigop13/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jordankanghm/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jordankanghm/ip.git (master)... +Sep 26, 2023 2:07:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/adhigop13/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/adhigop13/ip.git (master) completed! -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [146/478] Analyzing https://github.com/raydenlim/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [146/478] Analyzing https://github.com/freddychenyouren2/ip.git (master)... +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kailash201/ip.git completed! +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/laurenlim2112/ip.git completed! +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lambraydon/ip.git completed! +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sk2001git/ip.git... +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AndrewJanong/ip.git completed! +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chonguschonguschongus/ip.git... +Sep 26, 2023 2:07:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/freddychenyouren2/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/freddychenyouren2/ip.git (master)... +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lshaoqin/ip.git... +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chonguschonguschongus/ip.git to complete... +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/peasantbird/ip.git... +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sk2001git/ip.git to complete... +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/peasantbird/ip.git to complete... +Sep 26, 2023 2:07:21 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lshaoqin/ip.git to complete... +Sep 26, 2023 2:07:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jordankanghm/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jordankanghm/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jordankanghm/ip.git (master) completed! -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [147/478] Analyzing https://github.com/raydenlim/ip.git (master)... +Sep 26, 2023 2:07:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/raydenlim/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/raydenlim/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [147/478] Analyzing https://github.com/freddychenyouren2/ip.git (master)... -Sep 26, 2023 4:04:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/freddychenyouren2/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/freddychenyouren2/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/raydenlim/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/raydenlim/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/raydenlim/ip.git (master) completed! -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [148/478] Analyzing https://github.com/jrchoo/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jrchoo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jrchoo/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/peasantbird/ip.git completed! +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lshaoqin/ip.git completed! +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/WangCheng0116/ip.git... +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/WangCheng0116/ip.git to complete... +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/teozhengyang/ip.git... +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chonguschonguschongus/ip.git completed! +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/teozhengyang/ip.git to complete... +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chewjh1234/ip.git... +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chewjh1234/ip.git to complete... +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sk2001git/ip.git completed! +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/elaineshijie/ip.git... +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/elaineshijie/ip.git to complete... +Sep 26, 2023 2:07:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/freddychenyouren2/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/freddychenyouren2/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:22 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/freddychenyouren2/ip.git (master) completed! -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [148/478] Analyzing https://github.com/jingyu987/ip.git (master)... +Sep 26, 2023 2:07:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jingyu987/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jingyu987/ip.git (master)... +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WangCheng0116/ip.git completed! +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lynnlow175/ip.git... +Sep 26, 2023 2:07:22 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lynnlow175/ip.git to complete... +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chewjh1234/ip.git completed! +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lordidiot/ip.git... +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lordidiot/ip.git to complete... +Sep 26, 2023 2:07:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/raydenlim/ip.git (master)... +Sep 26, 2023 2:07:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/raydenlim/ip.git (master)... +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/elaineshijie/ip.git completed! +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chew01/ip.git... +Sep 26, 2023 2:07:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/raydenlim/ip.git (master) completed! +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chew01/ip.git to complete... +Sep 26, 2023 2:07:23 PM reposense.report.ReportGenerator analyzeRepos INFO: [149/478] Analyzing https://github.com/FerdiHS/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/FerdiHS/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/FerdiHS/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jrchoo/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jrchoo/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jrchoo/ip.git (master) completed! -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [150/478] Analyzing https://github.com/jingyu987/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jingyu987/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jingyu987/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jingyu987/ip.git (master)... +Sep 26, 2023 2:07:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jingyu987/ip.git (master)... +Sep 26, 2023 2:07:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jingyu987/ip.git (master) completed! +Sep 26, 2023 2:07:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [150/478] Analyzing https://github.com/jrchoo/ip.git (master)... +Sep 26, 2023 2:07:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jrchoo/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jrchoo/ip.git (master)... +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lynnlow175/ip.git completed! +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RSXIX/ip.git... +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RSXIX/ip.git to complete... +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lordidiot/ip.git completed! +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chew01/ip.git completed! +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/juliusgambe/ip.git... +Sep 26, 2023 2:07:23 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhonghan721/ip.git... +Sep 26, 2023 2:07:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/FerdiHS/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/juliusgambe/ip.git to complete... +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhonghan721/ip.git to complete... +Sep 26, 2023 2:07:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/FerdiHS/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/FerdiHS/ip.git (master) completed! -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:24 PM reposense.report.ReportGenerator analyzeRepos INFO: [151/478] Analyzing https://github.com/RiyaMehta2211/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RiyaMehta2211/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RiyaMehta2211/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jingyu987/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jingyu987/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jingyu987/ip.git (master) completed! -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jrchoo/ip.git (master)... +Sep 26, 2023 2:07:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jrchoo/ip.git (master)... +Sep 26, 2023 2:07:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jrchoo/ip.git (master) completed! +Sep 26, 2023 2:07:24 PM reposense.report.ReportGenerator analyzeRepos INFO: [152/478] Analyzing https://github.com/leezhanpeng/ip.git (master)... -Sep 26, 2023 4:04:08 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/leezhanpeng/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/leezhanpeng/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RSXIX/ip.git completed! +Sep 26, 2023 2:07:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/RiyaMehta2211/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/WZWren/ip.git... +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/WZWren/ip.git to complete... +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/juliusgambe/ip.git completed! +Sep 26, 2023 2:07:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/RiyaMehta2211/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhonghan721/ip.git completed! +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/inezkok/ip.git... +Sep 26, 2023 2:07:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/RiyaMehta2211/ip.git (master) completed! -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [153/478] Analyzing https://github.com/juzzztinsoong/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/juzzztinsoong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/juzzztinsoong/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [153/478] Analyzing https://github.com/darrentfy/ip.git (master)... +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wasjoe1/ip.git... +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/inezkok/ip.git to complete... +Sep 26, 2023 2:07:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/darrentfy/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/darrentfy/ip.git (master)... +Sep 26, 2023 2:07:24 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wasjoe1/ip.git to complete... +Sep 26, 2023 2:07:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/leezhanpeng/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/leezhanpeng/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/leezhanpeng/ip.git (master) completed! -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [154/478] Analyzing https://github.com/darrentfy/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/darrentfy/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/darrentfy/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/juzzztinsoong/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [154/478] Analyzing https://github.com/redtailedfox/ip.git (master)... +Sep 26, 2023 2:07:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/redtailedfox/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/redtailedfox/ip.git (master)... +Sep 26, 2023 2:07:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/darrentfy/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WZWren/ip.git completed! +Sep 26, 2023 2:07:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/darrentfy/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/darrentfy/ip.git (master) completed! -Sep 26, 2023 4:04:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/juzzztinsoong/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [155/478] Analyzing https://github.com/redtailedfox/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/juzzztinsoong/ip.git (master) completed! -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [156/478] Analyzing https://github.com/waseemingly/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/redtailedfox/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/redtailedfox/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kokrui/ip.git... +Sep 26, 2023 2:07:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [155/478] Analyzing https://github.com/juzzztinsoong/ip.git (master)... +Sep 26, 2023 2:07:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kokrui/ip.git to complete... +Sep 26, 2023 2:07:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/inezkok/ip.git completed! +Sep 26, 2023 2:07:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jinyang628/ip.git... +Sep 26, 2023 2:07:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wasjoe1/ip.git completed! +Sep 26, 2023 2:07:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jinyang628/ip.git to complete... +Sep 26, 2023 2:07:25 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nananakx-x/ip.git... +Sep 26, 2023 2:07:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/juzzztinsoong/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/juzzztinsoong/ip.git (master)... +Sep 26, 2023 2:07:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/redtailedfox/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:25 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nananakx-x/ip.git to complete... +Sep 26, 2023 2:07:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/redtailedfox/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/redtailedfox/ip.git (master) completed! -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [156/478] Analyzing https://github.com/waseemingly/ip.git (master)... +Sep 26, 2023 2:07:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teozhengyang/ip.git completed! +Sep 26, 2023 2:07:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ylyma/ip.git... +Sep 26, 2023 2:07:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ylyma/ip.git to complete... +Sep 26, 2023 2:07:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/juzzztinsoong/ip.git (master)... +Sep 26, 2023 2:07:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jinyang628/ip.git completed! +Sep 26, 2023 2:07:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AnnabelTing/ip.git... +Sep 26, 2023 2:07:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nananakx-x/ip.git completed! +Sep 26, 2023 2:07:26 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/timetraveller-123/ip.git... +Sep 26, 2023 2:07:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AnnabelTing/ip.git to complete... +Sep 26, 2023 2:07:26 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/timetraveller-123/ip.git to complete... +Sep 26, 2023 2:07:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/juzzztinsoong/ip.git (master)... +Sep 26, 2023 2:07:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/juzzztinsoong/ip.git (master) completed! +Sep 26, 2023 2:07:26 PM reposense.report.ReportGenerator analyzeRepos INFO: [157/478] Analyzing https://github.com/Heran9/ip.git (master)... -Sep 26, 2023 4:04:09 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Heran9/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Heran9/ip.git (master)... -Sep 26, 2023 4:04:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/waseemingly/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/waseemingly/ip.git (master)... +Sep 26, 2023 2:07:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Heran9/ip.git (master)... -Sep 26, 2023 4:04:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Heran9/ip.git (master)... -Sep 26, 2023 4:04:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Heran9/ip.git (master) completed! -Sep 26, 2023 4:04:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [158/478] Analyzing https://github.com/Fallman2/ip.git (master)... -Sep 26, 2023 4:04:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Fallman2/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Fallman2/ip.git (master)... -Sep 26, 2023 4:04:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/waseemingly/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/waseemingly/ip.git (master)... -Sep 26, 2023 4:04:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Fallman2/ip.git (master)... -Sep 26, 2023 4:04:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Fallman2/ip.git (master)... -Sep 26, 2023 4:04:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Fallman2/ip.git (master) completed! -Sep 26, 2023 4:04:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [159/478] Analyzing https://github.com/jingjie88/ip.git (master)... -Sep 26, 2023 4:04:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [158/478] Analyzing https://github.com/jingjie88/ip.git (master)... +Sep 26, 2023 2:07:27 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jingjie88/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jingjie88/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AnnabelTing/ip.git completed! +Sep 26, 2023 2:07:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/timetraveller-123/ip.git completed! +Sep 26, 2023 2:07:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LicongHuang/ip.git... +Sep 26, 2023 2:07:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Jweng88/ip.git... +Sep 26, 2023 2:07:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LicongHuang/ip.git to complete... +Sep 26, 2023 2:07:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jweng88/ip.git to complete... +Sep 26, 2023 2:07:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kokrui/ip.git completed! +Sep 26, 2023 2:07:27 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/EricXiong420/ip.git... +Sep 26, 2023 2:07:27 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/EricXiong420/ip.git to complete... +Sep 26, 2023 2:07:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jingjie88/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jingjie88/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jingjie88/ip.git (master) completed! -Sep 26, 2023 4:04:11 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [159/478] Analyzing https://github.com/Fallman2/ip.git (master)... +Sep 26, 2023 2:07:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Fallman2/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Fallman2/ip.git (master)... +Sep 26, 2023 2:07:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jweng88/ip.git completed! +Sep 26, 2023 2:07:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jovkusuma/ip.git... +Sep 26, 2023 2:07:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jovkusuma/ip.git to complete... +Sep 26, 2023 2:07:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ylyma/ip.git completed! +Sep 26, 2023 2:07:28 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bhnuka/ip.git... +Sep 26, 2023 2:07:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bhnuka/ip.git to complete... +Sep 26, 2023 2:07:28 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/EricXiong420/ip.git completed! +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/J-hta-n/ip.git... +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/J-hta-n/ip.git to complete... +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jovkusuma/ip.git completed! +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Tim-Siu/ip.git... +Sep 26, 2023 2:07:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Fallman2/ip.git (master)... +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Tim-Siu/ip.git to complete... +Sep 26, 2023 2:07:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Fallman2/ip.git (master)... +Sep 26, 2023 2:07:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Fallman2/ip.git (master) completed! +Sep 26, 2023 2:07:29 PM reposense.report.ReportGenerator analyzeRepos INFO: [160/478] Analyzing https://github.com/VN-Hao/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:29 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/VN-Hao/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/VN-Hao/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/VN-Hao/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/VN-Hao/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/VN-Hao/ip.git (master) completed! -Sep 26, 2023 4:04:11 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bhnuka/ip.git completed! +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yarnmengnus/ip.git... +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yarnmengnus/ip.git to complete... +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/J-hta-n/ip.git completed! +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sopa301/ip.git... +Sep 26, 2023 2:07:29 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sopa301/ip.git to complete... +Sep 26, 2023 2:07:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Tim-Siu/ip.git completed! +Sep 26, 2023 2:07:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ngeeyonglim/ip.git... +Sep 26, 2023 2:07:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ngeeyonglim/ip.git to complete... +Sep 26, 2023 2:07:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/waseemingly/ip.git (master)... +Sep 26, 2023 2:07:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yarnmengnus/ip.git completed! +Sep 26, 2023 2:07:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/waseemingly/ip.git (master)... +Sep 26, 2023 2:07:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/flexibo/ip.git... +Sep 26, 2023 2:07:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/waseemingly/ip.git (master) completed! +Sep 26, 2023 2:07:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/flexibo/ip.git to complete... +Sep 26, 2023 2:07:30 PM reposense.report.ReportGenerator analyzeRepos INFO: [161/478] Analyzing https://github.com/kimshitong/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sopa301/ip.git completed! +Sep 26, 2023 2:07:30 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ItsTYtan/ip.git... +Sep 26, 2023 2:07:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kimshitong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kimshitong/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kimshitong/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kimshitong/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kimshitong/ip.git (master) completed! -Sep 26, 2023 4:04:11 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ItsTYtan/ip.git to complete... +Sep 26, 2023 2:07:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/VN-Hao/ip.git (master)... +Sep 26, 2023 2:07:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/VN-Hao/ip.git (master)... +Sep 26, 2023 2:07:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/VN-Hao/ip.git (master) completed! +Sep 26, 2023 2:07:30 PM reposense.report.ReportGenerator analyzeRepos INFO: [162/478] Analyzing https://github.com/ivanleekk/ip.git (master)... -Sep 26, 2023 4:04:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:30 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ngeeyonglim/ip.git completed! +Sep 26, 2023 2:07:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/javinchua/ip.git... +Sep 26, 2023 2:07:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/javinchua/ip.git to complete... +Sep 26, 2023 2:07:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ivanleekk/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ivanleekk/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ItsTYtan/ip.git completed! +Sep 26, 2023 2:07:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/amosting/ip.git... +Sep 26, 2023 2:07:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/amosting/ip.git to complete... +Sep 26, 2023 2:07:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/javinchua/ip.git completed! +Sep 26, 2023 2:07:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ivanleekk/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:31 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Cleon2/ip.git... +Sep 26, 2023 2:07:31 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Cleon2/ip.git to complete... +Sep 26, 2023 2:07:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ivanleekk/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:32 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ivanleekk/ip.git (master) completed! -Sep 26, 2023 4:04:12 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:32 PM reposense.report.ReportGenerator analyzeRepos INFO: [163/478] Analyzing https://github.com/lamchenghou/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lamchenghou/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lamchenghou/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kimshitong/ip.git (master)... +Sep 26, 2023 2:07:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kimshitong/ip.git (master)... +Sep 26, 2023 2:07:32 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kimshitong/ip.git (master) completed! +Sep 26, 2023 2:07:32 PM reposense.report.ReportGenerator analyzeRepos +INFO: [164/478] Analyzing https://github.com/H1410101/ip.git (master)... +Sep 26, 2023 2:07:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LicongHuang/ip.git completed! +Sep 26, 2023 2:07:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/amosting/ip.git completed! +Sep 26, 2023 2:07:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ketweeen/ip.git... +Sep 26, 2023 2:07:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sudarshan2401/ip.git... +Sep 26, 2023 2:07:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ketweeen/ip.git to complete... +Sep 26, 2023 2:07:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sudarshan2401/ip.git to complete... +Sep 26, 2023 2:07:32 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/H1410101/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/H1410101/ip.git (master)... +Sep 26, 2023 2:07:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cleon2/ip.git completed! +Sep 26, 2023 2:07:32 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wui-hong/ip.git... +Sep 26, 2023 2:07:32 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wui-hong/ip.git to complete... +Sep 26, 2023 2:07:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ketweeen/ip.git completed! +Sep 26, 2023 2:07:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Respirayson/ip.git... +Sep 26, 2023 2:07:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Respirayson/ip.git to complete... +Sep 26, 2023 2:07:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lamchenghou/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sudarshan2401/ip.git completed! +Sep 26, 2023 2:07:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chrainx/ip.git... +Sep 26, 2023 2:07:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wui-hong/ip.git completed! +Sep 26, 2023 2:07:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chrainx/ip.git to complete... +Sep 26, 2023 2:07:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lamchenghou/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:33 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shishirbychapur/ip.git... +Sep 26, 2023 2:07:33 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lamchenghou/ip.git (master) completed! -Sep 26, 2023 4:04:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [164/478] Analyzing https://github.com/tayruxin/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:33 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shishirbychapur/ip.git to complete... +Sep 26, 2023 2:07:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [165/478] Analyzing https://github.com/tayruxin/ip.git (master)... +Sep 26, 2023 2:07:33 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tayruxin/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tayruxin/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/waseemingly/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/flexibo/ip.git completed! +Sep 26, 2023 2:07:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sunzihan23/ip.git... +Sep 26, 2023 2:07:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sunzihan23/ip.git to complete... +Sep 26, 2023 2:07:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Respirayson/ip.git completed! +Sep 26, 2023 2:07:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wj331/ip.git... +Sep 26, 2023 2:07:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wj331/ip.git to complete... +Sep 26, 2023 2:07:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tayruxin/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/H1410101/ip.git (master)... +Sep 26, 2023 2:07:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tayruxin/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:34 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tayruxin/ip.git (master) completed! -Sep 26, 2023 4:04:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [165/478] Analyzing https://github.com/raynertjx/ip.git (master)... -Sep 26, 2023 4:04:12 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:34 PM reposense.report.ReportGenerator analyzeRepos +INFO: [166/478] Analyzing https://github.com/raynertjx/ip.git (master)... +Sep 26, 2023 2:07:34 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/raynertjx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/raynertjx/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/waseemingly/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/waseemingly/ip.git (master) completed! -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [166/478] Analyzing https://github.com/H1410101/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/H1410101/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/H1410101/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/raynertjx/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/raynertjx/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/raynertjx/ip.git (master) completed! -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shishirbychapur/ip.git completed! +Sep 26, 2023 2:07:34 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tjch-o/ip.git... +Sep 26, 2023 2:07:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/H1410101/ip.git (master)... +Sep 26, 2023 2:07:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/H1410101/ip.git (master) completed! +Sep 26, 2023 2:07:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tjch-o/ip.git to complete... +Sep 26, 2023 2:07:34 PM reposense.report.ReportGenerator analyzeRepos INFO: [167/478] Analyzing https://github.com/zhengyup/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:34 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhengyup/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhengyup/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:34 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sunzihan23/ip.git completed! +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/licongshen12/ip.git... +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/licongshen12/ip.git to complete... +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wj331/ip.git completed! +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/mamayuan/ip.git... +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/mamayuan/ip.git to complete... +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tjch-o/ip.git completed! +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ong-wei-hong/ip.git... +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ong-wei-hong/ip.git to complete... +Sep 26, 2023 2:07:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/raynertjx/ip.git (master)... +Sep 26, 2023 2:07:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zhengyup/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chrainx/ip.git completed! +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tanboonkhong/ip.git... +Sep 26, 2023 2:07:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/raynertjx/ip.git (master)... +Sep 26, 2023 2:07:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zhengyup/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:35 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanboonkhong/ip.git to complete... +Sep 26, 2023 2:07:35 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zhengyup/ip.git (master) completed! -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/raynertjx/ip.git (master) completed! +Sep 26, 2023 2:07:35 PM reposense.report.ReportGenerator analyzeRepos INFO: [168/478] Analyzing https://github.com/larrywang0701/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [169/478] Analyzing https://github.com/Carlintyj/ip.git (master)... +Sep 26, 2023 2:07:35 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/larrywang0701/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/larrywang0701/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/H1410101/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:35 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Carlintyj/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Carlintyj/ip.git (master)... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mamayuan/ip.git completed! +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cbj252/ip.git... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/licongshen12/ip.git completed! +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cbj252/ip.git to complete... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AlfredBeNoel/ip.git... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AlfredBeNoel/ip.git to complete... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ong-wei-hong/ip.git completed! +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/keaganpzh/ip.git... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/keaganpzh/ip.git to complete... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanboonkhong/ip.git completed! +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ElginTZM/ip.git... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ElginTZM/ip.git to complete... +Sep 26, 2023 2:07:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/larrywang0701/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/larrywang0701/ip.git (master)... -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:36 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/larrywang0701/ip.git (master) completed! -Sep 26, 2023 4:04:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [169/478] Analyzing https://github.com/Carlintyj/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/H1410101/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/H1410101/ip.git (master) completed! -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Carlintyj/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Carlintyj/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [170/478] Analyzing https://github.com/wxwern/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wxwern/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wxwern/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [170/478] Analyzing https://github.com/nubnubyas/ip.git (master)... +Sep 26, 2023 2:07:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nubnubyas/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nubnubyas/ip.git (master)... +Sep 26, 2023 2:07:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Carlintyj/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Carlintyj/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:36 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Carlintyj/ip.git (master) completed! -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [171/478] Analyzing https://github.com/nubnubyas/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nubnubyas/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nubnubyas/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wxwern/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wxwern/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wxwern/ip.git (master) completed! -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [172/478] Analyzing https://github.com/aslam341/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aslam341/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aslam341/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [171/478] Analyzing https://github.com/wxwern/ip.git (master)... +Sep 26, 2023 2:07:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wxwern/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wxwern/ip.git (master)... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cbj252/ip.git completed! +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlfredBeNoel/ip.git completed! +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LimJH2002/ip.git... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LimJH2002/ip.git to complete... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cmHuang777/ip.git... +Sep 26, 2023 2:07:36 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cmHuang777/ip.git to complete... +Sep 26, 2023 2:07:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/keaganpzh/ip.git completed! +Sep 26, 2023 2:07:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/WeeeHung/ip.git... +Sep 26, 2023 2:07:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/WeeeHung/ip.git to complete... +Sep 26, 2023 2:07:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ElginTZM/ip.git completed! +Sep 26, 2023 2:07:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xxiaoweii/ip.git... +Sep 26, 2023 2:07:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xxiaoweii/ip.git to complete... +Sep 26, 2023 2:07:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nubnubyas/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nubnubyas/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nubnubyas/ip.git (master) completed! -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [172/478] Analyzing https://github.com/aslam341/ip.git (master)... +Sep 26, 2023 2:07:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aslam341/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aslam341/ip.git (master)... +Sep 26, 2023 2:07:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wxwern/ip.git (master)... +Sep 26, 2023 2:07:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wxwern/ip.git (master)... +Sep 26, 2023 2:07:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wxwern/ip.git (master) completed! +Sep 26, 2023 2:07:37 PM reposense.report.ReportGenerator analyzeRepos INFO: [173/478] Analyzing https://github.com/LWZ19/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LWZ19/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LWZ19/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cmHuang777/ip.git completed! +Sep 26, 2023 2:07:37 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rayyan35p/ip.git... +Sep 26, 2023 2:07:37 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rayyan35p/ip.git to complete... +Sep 26, 2023 2:07:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/aslam341/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/aslam341/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/aslam341/ip.git (master) completed! -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [174/478] Analyzing https://github.com/timleow/ip.git (master)... -Sep 26, 2023 4:04:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/timleow/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/timleow/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/timleow/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/timleow/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/timleow/ip.git (master) completed! -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [175/478] Analyzing https://github.com/rayshawntan/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [174/478] Analyzing https://github.com/rayshawntan/ip.git (master)... +Sep 26, 2023 2:07:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rayshawntan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rayshawntan/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LWZ19/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LWZ19/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LWZ19/ip.git (master) completed! -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [176/478] Analyzing https://github.com/aexolate/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aexolate/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aexolate/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xxiaoweii/ip.git completed! +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dhruvir29/ip.git... +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dhruvir29/ip.git to complete... +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rayyan35p/ip.git completed! +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LinWanLeii/ip.git... +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WeeeHung/ip.git completed! +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LinWanLeii/ip.git to complete... +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Song-Mengfei/ip.git... +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Song-Mengfei/ip.git to complete... +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LimJH2002/ip.git completed! +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jinyuan0425/ip.git... +Sep 26, 2023 2:07:38 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jinyuan0425/ip.git to complete... +Sep 26, 2023 2:07:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/rayshawntan/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/rayshawntan/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:38 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/rayshawntan/ip.git (master) completed! -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [177/478] Analyzing https://github.com/Sheeepen/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [175/478] Analyzing https://github.com/aexolate/ip.git (master)... +Sep 26, 2023 2:07:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aexolate/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aexolate/ip.git (master)... +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dhruvir29/ip.git completed! +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tiif/ip.git... +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tiif/ip.git to complete... +Sep 26, 2023 2:07:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LWZ19/ip.git (master)... +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LinWanLeii/ip.git completed! +Sep 26, 2023 2:07:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LWZ19/ip.git (master)... +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nicholascher/ip.git... +Sep 26, 2023 2:07:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LWZ19/ip.git (master) completed! +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicholascher/ip.git to complete... +Sep 26, 2023 2:07:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [176/478] Analyzing https://github.com/Sheeepen/ip.git (master)... +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Song-Mengfei/ip.git completed! +Sep 26, 2023 2:07:39 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Sheeepen/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Sheeepen/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hcs1203/ip.git... +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hcs1203/ip.git to complete... +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jinyuan0425/ip.git completed! +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/papataco14/ip.git... +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/papataco14/ip.git to complete... +Sep 26, 2023 2:07:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/aexolate/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/aexolate/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:39 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/aexolate/ip.git (master) completed! -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [178/478] Analyzing https://github.com/shuyangk/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [177/478] Analyzing https://github.com/shuyangk/ip.git (master)... +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tiif/ip.git completed! +Sep 26, 2023 2:07:39 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KamJiaYue/ip.git... +Sep 26, 2023 2:07:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KamJiaYue/ip.git to complete... +Sep 26, 2023 2:07:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shuyangk/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shuyangk/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Sheeepen/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shuyangk/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Sheeepen/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Sheeepen/ip.git (master) completed! -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [179/478] Analyzing https://github.com/iyioon/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [178/478] Analyzing https://github.com/timleow/ip.git (master)... +Sep 26, 2023 2:07:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/timleow/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/timleow/ip.git (master)... +Sep 26, 2023 2:07:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/papataco14/ip.git completed! +Sep 26, 2023 2:07:40 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/NereusWB922/ip.git... +Sep 26, 2023 2:07:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hcs1203/ip.git completed! +Sep 26, 2023 2:07:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/NereusWB922/ip.git to complete... +Sep 26, 2023 2:07:40 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PohSayKeong/ip.git... +Sep 26, 2023 2:07:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shuyangk/ip.git (master)... +Sep 26, 2023 2:07:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PohSayKeong/ip.git to complete... +Sep 26, 2023 2:07:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shuyangk/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shuyangk/ip.git (master) completed! -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [180/478] Analyzing https://github.com/kiwibang/ip.git (master)... -Sep 26, 2023 4:04:15 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [179/478] Analyzing https://github.com/iyioon/ip.git (master)... +Sep 26, 2023 2:07:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/iyioon/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/iyioon/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kiwibang/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kiwibang/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KamJiaYue/ip.git completed! +Sep 26, 2023 2:07:40 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ivyy-poison/ip.git... +Sep 26, 2023 2:07:40 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ivyy-poison/ip.git to complete... +Sep 26, 2023 2:07:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/iyioon/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kiwibang/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/timleow/ip.git (master)... +Sep 26, 2023 2:07:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/iyioon/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kiwibang/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/iyioon/ip.git (master) completed! -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [180/478] Analyzing https://github.com/kiwibang/ip.git (master)... +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PohSayKeong/ip.git completed! +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jacobcuison/ip.git... +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jacobcuison/ip.git to complete... +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicholascher/ip.git completed! +Sep 26, 2023 2:07:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/timleow/ip.git (master)... +Sep 26, 2023 2:07:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kiwibang/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kiwibang/ip.git (master)... +Sep 26, 2023 2:07:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/timleow/ip.git (master) completed! +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ji-just-ji/ip.git... +Sep 26, 2023 2:07:41 PM reposense.report.ReportGenerator analyzeRepos INFO: [181/478] Analyzing https://github.com/ncmathan/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ji-just-ji/ip.git to complete... +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NereusWB922/ip.git completed! +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kohkaijie/ip.git... +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kohkaijie/ip.git to complete... +Sep 26, 2023 2:07:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ncmathan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ncmathan/ip.git (master)... +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ivyy-poison/ip.git completed! +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rocketninja7/ip.git... +Sep 26, 2023 2:07:41 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rocketninja7/ip.git to complete... +Sep 26, 2023 2:07:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kiwibang/ip.git (master)... +Sep 26, 2023 2:07:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kiwibang/ip.git (master)... +Sep 26, 2023 2:07:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kiwibang/ip.git (master) completed! -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:41 PM reposense.report.ReportGenerator analyzeRepos INFO: [182/478] Analyzing https://github.com/LuoZYi/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LuoZYi/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LuoZYi/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ncmathan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ncmathan/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jacobcuison/ip.git completed! +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ji-just-ji/ip.git completed! +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zekone/ip.git... +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zekone/ip.git to complete... +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/markgcera/ip.git... +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/markgcera/ip.git to complete... +Sep 26, 2023 2:07:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LuoZYi/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LuoZYi/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LuoZYi/ip.git (master) completed! -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:42 PM reposense.report.ReportGenerator analyzeRepos INFO: [183/478] Analyzing https://github.com/asdfghjkxd/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rocketninja7/ip.git completed! +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PearlynnT/ip.git... +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PearlynnT/ip.git to complete... +Sep 26, 2023 2:07:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ncmathan/ip.git (master)... +Sep 26, 2023 2:07:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/asdfghjkxd/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/asdfghjkxd/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ncmathan/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kohkaijie/ip.git completed! +Sep 26, 2023 2:07:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ncmathan/ip.git (master)... -Sep 26, 2023 4:04:16 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ncmathan/ip.git (master) completed! -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [184/478] Analyzing https://github.com/Nid21cs/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [184/478] Analyzing https://github.com/mingyu-wan/ip.git (master)... +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/StevenLiudw/ip.git... +Sep 26, 2023 2:07:42 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/StevenLiudw/ip.git to complete... +Sep 26, 2023 2:07:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mingyu-wan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mingyu-wan/ip.git (master)... +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zekone/ip.git completed! +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/markgcera/ip.git completed! +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TeeRenJing/ip.git... +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/mounilsankar/ip.git... +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TeeRenJing/ip.git to complete... +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/mounilsankar/ip.git to complete... +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PearlynnT/ip.git completed! +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dloh2236/ip.git... +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dloh2236/ip.git to complete... +Sep 26, 2023 2:07:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mingyu-wan/ip.git (master)... +Sep 26, 2023 2:07:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mingyu-wan/ip.git (master)... +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/StevenLiudw/ip.git completed! +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zannloo/ip.git... +Sep 26, 2023 2:07:43 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mingyu-wan/ip.git (master) completed! +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zannloo/ip.git to complete... +Sep 26, 2023 2:07:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [185/478] Analyzing https://github.com/Nid21cs/ip.git (master)... +Sep 26, 2023 2:07:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Nid21cs/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Nid21cs/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/asdfghjkxd/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TeeRenJing/ip.git completed! +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/junnengsoo/ip.git... +Sep 26, 2023 2:07:43 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/junnengsoo/ip.git to complete... +Sep 26, 2023 2:07:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Nid21cs/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Nid21cs/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Nid21cs/ip.git (master) completed! -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [185/478] Analyzing https://github.com/mingyu-wan/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/asdfghjkxd/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/asdfghjkxd/ip.git (master) completed! -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:44 PM reposense.report.ReportGenerator analyzeRepos INFO: [186/478] Analyzing https://github.com/McNaBry/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mingyu-wan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mingyu-wan/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/asdfghjkxd/ip.git (master)... +Sep 26, 2023 2:07:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/McNaBry/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/McNaBry/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mingyu-wan/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mingyu-wan/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mingyu-wan/ip.git (master) completed! -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dloh2236/ip.git completed! +Sep 26, 2023 2:07:44 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/freshcabbage123/ip.git... +Sep 26, 2023 2:07:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/asdfghjkxd/ip.git (master)... +Sep 26, 2023 2:07:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zannloo/ip.git completed! +Sep 26, 2023 2:07:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/freshcabbage123/ip.git to complete... +Sep 26, 2023 2:07:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/asdfghjkxd/ip.git (master) completed! +Sep 26, 2023 2:07:44 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kokseng1/ip.git... +Sep 26, 2023 2:07:44 PM reposense.report.ReportGenerator analyzeRepos INFO: [187/478] Analyzing https://github.com/miljyy/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kokseng1/ip.git to complete... +Sep 26, 2023 2:07:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/miljyy/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/miljyy/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/junnengsoo/ip.git completed! +Sep 26, 2023 2:07:44 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/itsNatTan/ip.git... +Sep 26, 2023 2:07:44 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/itsNatTan/ip.git to complete... +Sep 26, 2023 2:07:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/McNaBry/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/McNaBry/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/McNaBry/ip.git (master) completed! -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:45 PM reposense.report.ReportGenerator analyzeRepos INFO: [188/478] Analyzing https://github.com/sushiyade/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sushiyade/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sushiyade/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/miljyy/ip.git (master)... -Sep 26, 2023 4:04:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/miljyy/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/miljyy/ip.git (master) completed! -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [189/478] Analyzing https://github.com/ruishanteo/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruishanteo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruishanteo/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruishanteo/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruishanteo/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruishanteo/ip.git (master) completed! -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:45 PM reposense.report.ReportGenerator analyzeRepos +INFO: [189/478] Analyzing https://github.com/ncduy0303/ip.git (master)... +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kokseng1/ip.git completed! +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tjingsheng/ip.git... +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mounilsankar/ip.git completed! +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tjingsheng/ip.git to complete... +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ZD292/ip.git... +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/freshcabbage123/ip.git completed! +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ZD292/ip.git to complete... +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alientian/ip.git... +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alientian/ip.git to complete... +Sep 26, 2023 2:07:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ncduy0303/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ncduy0303/ip.git (master)... +Sep 26, 2023 2:07:45 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sushiyade/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sushiyade/ip.git (master)... +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/itsNatTan/ip.git completed! +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/frrrrry/ip.git... +Sep 26, 2023 2:07:45 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/frrrrry/ip.git to complete... +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ZD292/ip.git completed! +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wanghejin/ip.git... +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alientian/ip.git completed! +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wanghejin/ip.git to complete... +Sep 26, 2023 2:07:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ncduy0303/ip.git (master)... +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/MagnificentCreature/ip.git... +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/MagnificentCreature/ip.git to complete... +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/frrrrry/ip.git completed! +Sep 26, 2023 2:07:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ncduy0303/ip.git (master)... +Sep 26, 2023 2:07:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ncduy0303/ip.git (master) completed! +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SungMatt/ip.git... +Sep 26, 2023 2:07:46 PM reposense.report.ReportGenerator analyzeRepos INFO: [190/478] Analyzing https://github.com/eyelessrhyme7/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SungMatt/ip.git to complete... +Sep 26, 2023 2:07:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/eyelessrhyme7/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/eyelessrhyme7/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tjingsheng/ip.git completed! +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/andrefoo/ip.git... +Sep 26, 2023 2:07:46 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/andrefoo/ip.git to complete... +Sep 26, 2023 2:07:47 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wanghejin/ip.git completed! +Sep 26, 2023 2:07:47 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tohpinren/ip.git... +Sep 26, 2023 2:07:47 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tohpinren/ip.git to complete... +Sep 26, 2023 2:07:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/eyelessrhyme7/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/eyelessrhyme7/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:47 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/MagnificentCreature/ip.git completed! +Sep 26, 2023 2:07:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/eyelessrhyme7/ip.git (master) completed! -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator analyzeRepos -INFO: [191/478] Analyzing https://github.com/ncduy0303/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [191/478] Analyzing https://github.com/ruishanteo/ip.git (master)... +Sep 26, 2023 2:07:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sushiyade/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ncduy0303/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ncduy0303/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:47 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/XihuaZ/ip.git... +Sep 26, 2023 2:07:47 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/XihuaZ/ip.git to complete... +Sep 26, 2023 2:07:47 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruishanteo/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruishanteo/ip.git (master)... +Sep 26, 2023 2:07:47 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/andrefoo/ip.git completed! +Sep 26, 2023 2:07:47 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xavierpok/ip.git... +Sep 26, 2023 2:07:47 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xavierpok/ip.git to complete... +Sep 26, 2023 2:07:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sushiyade/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sushiyade/ip.git (master) completed! -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [192/478] Analyzing https://github.com/Nixx162/ip.git (master)... -Sep 26, 2023 4:04:18 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Nixx162/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Nixx162/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ncduy0303/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Nixx162/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Nixx162/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Nixx162/ip.git (master) completed! -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tohpinren/ip.git completed! +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bkjwjason/ip.git... +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bkjwjason/ip.git to complete... +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/XihuaZ/ip.git completed! +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Choonyan02/ip.git... +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Choonyan02/ip.git to complete... +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xavierpok/ip.git completed! +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/aarontxz/ip.git... +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/aarontxz/ip.git to complete... +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SungMatt/ip.git completed! +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jianyangg/ip.git... +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jianyangg/ip.git to complete... +Sep 26, 2023 2:07:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruishanteo/ip.git (master)... +Sep 26, 2023 2:07:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruishanteo/ip.git (master)... +Sep 26, 2023 2:07:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruishanteo/ip.git (master) completed! +Sep 26, 2023 2:07:48 PM reposense.report.ReportGenerator analyzeRepos INFO: [193/478] Analyzing https://github.com/m1oojv/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ncduy0303/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ncduy0303/ip.git (master) completed! -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [194/478] Analyzing https://github.com/mfjkri/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/m1oojv/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/m1oojv/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mfjkri/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mfjkri/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mfjkri/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mfjkri/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mfjkri/ip.git (master) completed! -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [195/478] Analyzing https://github.com/Gabriel4357/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/m1oojv/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Nixx162/ip.git (master)... +Sep 26, 2023 2:07:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Nixx162/ip.git (master)... +Sep 26, 2023 2:07:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Nixx162/ip.git (master) completed! +Sep 26, 2023 2:07:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [194/478] Analyzing https://github.com/Gabriel4357/ip.git (master)... +Sep 26, 2023 2:07:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Gabriel4357/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Gabriel4357/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bkjwjason/ip.git completed! +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tayian/ip.git... +Sep 26, 2023 2:07:48 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tayian/ip.git to complete... +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Choonyan02/ip.git completed! +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wnchan/ip.git... +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wnchan/ip.git to complete... +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aarontxz/ip.git completed! +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Jweewee/ip.git... +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jweewee/ip.git to complete... +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jianyangg/ip.git completed! +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cyaoxuan/ip.git... +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cyaoxuan/ip.git to complete... +Sep 26, 2023 2:07:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/m1oojv/ip.git (master)... +Sep 26, 2023 2:07:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/m1oojv/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/m1oojv/ip.git (master) completed! -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [196/478] Analyzing https://github.com/junhonglow/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/junhonglow/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/junhonglow/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/junhonglow/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/junhonglow/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [195/478] Analyzing https://github.com/mfjkri/ip.git (master)... +Sep 26, 2023 2:07:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Gabriel4357/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/junhonglow/ip.git (master) completed! -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [197/478] Analyzing https://github.com/nknguyenhc/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Gabriel4357/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nknguyenhc/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nknguyenhc/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mfjkri/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mfjkri/ip.git (master)... +Sep 26, 2023 2:07:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Gabriel4357/ip.git (master) completed! -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [198/478] Analyzing https://github.com/RoeReRe/ip.git (master)... -Sep 26, 2023 4:04:19 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [196/478] Analyzing https://github.com/RoeReRe/ip.git (master)... +Sep 26, 2023 2:07:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RoeReRe/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RoeReRe/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tayian/ip.git completed! +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/anthonytamzil/ip.git... +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/anthonytamzil/ip.git to complete... +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wnchan/ip.git completed! +Sep 26, 2023 2:07:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/RoeReRe/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:49 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/CelestineTan03/ip.git... +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/CelestineTan03/ip.git to complete... +Sep 26, 2023 2:07:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/RoeReRe/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/RoeReRe/ip.git (master) completed! -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [199/478] Analyzing https://github.com/Badatprogrammiing/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [197/478] Analyzing https://github.com/junhonglow/ip.git (master)... +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cyaoxuan/ip.git completed! +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/saltedfishxx/ip.git... +Sep 26, 2023 2:07:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/junhonglow/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/junhonglow/ip.git (master)... +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/saltedfishxx/ip.git to complete... +Sep 26, 2023 2:07:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mfjkri/ip.git (master)... +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/anthonytamzil/ip.git completed! +Sep 26, 2023 2:07:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mfjkri/ip.git (master)... +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/euchangxian/ip.git... +Sep 26, 2023 2:07:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mfjkri/ip.git (master) completed! +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/euchangxian/ip.git to complete... +Sep 26, 2023 2:07:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [198/478] Analyzing https://github.com/Badatprogrammiing/ip.git (master)... +Sep 26, 2023 2:07:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Badatprogrammiing/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Badatprogrammiing/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nknguyenhc/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nknguyenhc/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nknguyenhc/ip.git (master) completed! -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [200/478] Analyzing https://github.com/winson8222/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/junhonglow/ip.git (master)... +Sep 26, 2023 2:07:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/junhonglow/ip.git (master)... +Sep 26, 2023 2:07:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/junhonglow/ip.git (master) completed! +Sep 26, 2023 2:07:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [199/478] Analyzing https://github.com/nknguyenhc/ip.git (master)... +Sep 26, 2023 2:07:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nknguyenhc/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nknguyenhc/ip.git (master)... +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/saltedfishxx/ip.git completed! +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AlagappanRa/ip.git... +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AlagappanRa/ip.git to complete... +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jweewee/ip.git completed! +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ken-Lai/ip.git... +Sep 26, 2023 2:07:50 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ken-Lai/ip.git to complete... +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/CelestineTan03/ip.git completed! +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/itssisi/ip.git... +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/itssisi/ip.git to complete... +Sep 26, 2023 2:07:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Badatprogrammiing/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/winson8222/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/winson8222/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Badatprogrammiing/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Badatprogrammiing/ip.git (master) completed! -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [201/478] Analyzing https://github.com/SimWPEric/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SimWPEric/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SimWPEric/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [200/478] Analyzing https://github.com/winson8222/ip.git (master)... +Sep 26, 2023 2:07:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/winson8222/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/winson8222/ip.git (master)... +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlagappanRa/ip.git completed! +Sep 26, 2023 2:07:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nknguyenhc/ip.git (master)... +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ken-Lai/ip.git completed! +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jamz903/ip.git... +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jamz903/ip.git to complete... +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kevin-Liusx/ip.git... +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kevin-Liusx/ip.git to complete... +Sep 26, 2023 2:07:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nknguyenhc/ip.git (master)... +Sep 26, 2023 2:07:51 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nknguyenhc/ip.git (master) completed! +Sep 26, 2023 2:07:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [201/478] Analyzing https://github.com/wujy28/ip.git (master)... +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/itssisi/ip.git completed! +Sep 26, 2023 2:07:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wujy28/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wujy28/ip.git (master)... +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Propene-Dan/ip.git... +Sep 26, 2023 2:07:51 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Propene-Dan/ip.git to complete... +Sep 26, 2023 2:07:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/winson8222/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/winson8222/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/winson8222/ip.git (master) completed! -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [202/478] Analyzing https://github.com/wujy28/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wujy28/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wujy28/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SimWPEric/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SimWPEric/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SimWPEric/ip.git (master) completed! -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator analyzeRepos -INFO: [203/478] Analyzing https://github.com/HugeNoob/ip.git (master)... -Sep 26, 2023 4:04:20 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/HugeNoob/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/HugeNoob/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [202/478] Analyzing https://github.com/SimWPEric/ip.git (master)... +Sep 26, 2023 2:07:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SimWPEric/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SimWPEric/ip.git (master)... +Sep 26, 2023 2:07:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wujy28/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wujy28/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wujy28/ip.git (master) completed! -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/euchangxian/ip.git completed! +Sep 26, 2023 2:07:52 PM reposense.report.ReportGenerator analyzeRepos +INFO: [203/478] Analyzing https://github.com/HugeNoob/ip.git (master)... +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChuanXinNg/ip.git... +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChuanXinNg/ip.git to complete... +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jamz903/ip.git completed! +Sep 26, 2023 2:07:52 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/HugeNoob/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/HugeNoob/ip.git (master)... +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kenvynKwek/ip.git... +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kenvynKwek/ip.git to complete... +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kevin-Liusx/ip.git completed! +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ruizhi2001/ip.git... +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ruizhi2001/ip.git to complete... +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Propene-Dan/ip.git completed! +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/prawnzyy/ip.git... +Sep 26, 2023 2:07:52 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/prawnzyy/ip.git to complete... +Sep 26, 2023 2:07:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SimWPEric/ip.git (master)... +Sep 26, 2023 2:07:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SimWPEric/ip.git (master)... +Sep 26, 2023 2:07:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SimWPEric/ip.git (master) completed! +Sep 26, 2023 2:07:52 PM reposense.report.ReportGenerator analyzeRepos INFO: [204/478] Analyzing https://github.com/lerxuann/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lerxuann/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lerxuann/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HugeNoob/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChuanXinNg/ip.git completed! +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/saraozn/ip.git... +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/saraozn/ip.git to complete... +Sep 26, 2023 2:07:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/HugeNoob/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/HugeNoob/ip.git (master) completed! -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [205/478] Analyzing https://github.com/Weiennn/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kenvynKwek/ip.git completed! +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nicholastng010601/ip.git... +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicholastng010601/ip.git to complete... +Sep 26, 2023 2:07:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Weiennn/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Weiennn/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/prawnzyy/ip.git completed! +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DistractedCat/ip.git... +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DistractedCat/ip.git to complete... +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ruizhi2001/ip.git completed! +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yezkez10/ip.git... +Sep 26, 2023 2:07:53 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yezkez10/ip.git to complete... +Sep 26, 2023 2:07:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lerxuann/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lerxuann/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lerxuann/ip.git (master) completed! -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [206/478] Analyzing https://github.com/maj0-0/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/maj0-0/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/maj0-0/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [206/478] Analyzing https://github.com/qyaner/ip.git (master)... +Sep 26, 2023 2:07:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/qyaner/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/qyaner/ip.git (master)... +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/saraozn/ip.git completed! +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/revdrag/ip.git... +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/revdrag/ip.git to complete... +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicholastng010601/ip.git completed! +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alvinlim277/ip.git... +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alvinlim277/ip.git to complete... +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DistractedCat/ip.git completed! +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JasonRay168/ip.git... +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JasonRay168/ip.git to complete... +Sep 26, 2023 2:07:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Weiennn/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Weiennn/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Weiennn/ip.git (master) completed! -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [207/478] Analyzing https://github.com/qyaner/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/qyaner/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/qyaner/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/maj0-0/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yezkez10/ip.git completed! +Sep 26, 2023 2:07:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [207/478] Analyzing https://github.com/maj0-0/ip.git (master)... +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/billieboy7/ip.git... +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/billieboy7/ip.git to complete... +Sep 26, 2023 2:07:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/maj0-0/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/maj0-0/ip.git (master)... +Sep 26, 2023 2:07:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/qyaner/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/maj0-0/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/maj0-0/ip.git (master) completed! -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [208/478] Analyzing https://github.com/ruiyangzh/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/qyaner/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/qyaner/ip.git (master) completed! -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [209/478] Analyzing https://github.com/Bombbird2001/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [208/478] Analyzing https://github.com/ruiyangzh/ip.git (master)... +Sep 26, 2023 2:07:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ruiyangzh/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ruiyangzh/ip.git (master)... -Sep 26, 2023 4:04:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Bombbird2001/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Bombbird2001/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/revdrag/ip.git completed! +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jannnice/ip.git... +Sep 26, 2023 2:07:54 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jannnice/ip.git to complete... +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alvinlim277/ip.git completed! +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/evanyan13/ip.git... +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/evanyan13/ip.git to complete... +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JasonRay168/ip.git completed! +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/samuelim01/ip.git... +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/samuelim01/ip.git to complete... +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/billieboy7/ip.git completed! +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dinde2004/ip.git... +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dinde2004/ip.git to complete... +Sep 26, 2023 2:07:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ruiyangzh/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jannnice/ip.git completed! +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/seanpzk/ip.git... +Sep 26, 2023 2:07:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/maj0-0/ip.git (master)... +Sep 26, 2023 2:07:55 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/seanpzk/ip.git to complete... +Sep 26, 2023 2:07:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ruiyangzh/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ruiyangzh/ip.git (master) completed! -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [210/478] Analyzing https://github.com/hyc17003/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/hyc17003/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/hyc17003/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Bombbird2001/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Bombbird2001/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Bombbird2001/ip.git (master) completed! -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [211/478] Analyzing https://github.com/adammangzijun/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [209/478] Analyzing https://github.com/Bombbird2001/ip.git (master)... +Sep 26, 2023 2:07:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/maj0-0/ip.git (master)... +Sep 26, 2023 2:07:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/maj0-0/ip.git (master) completed! +Sep 26, 2023 2:07:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [210/478] Analyzing https://github.com/adammangzijun/ip.git (master)... +Sep 26, 2023 2:07:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Bombbird2001/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Bombbird2001/ip.git (master)... +Sep 26, 2023 2:07:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/adammangzijun/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/adammangzijun/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hyc17003/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hyc17003/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hyc17003/ip.git (master) completed! -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [212/478] Analyzing https://github.com/andytoh1/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/andytoh1/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/andytoh1/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/evanyan13/ip.git completed! +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KumChaiYin/ip.git... +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dinde2004/ip.git completed! +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KumChaiYin/ip.git to complete... +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lsyurea/ip.git... +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/samuelim01/ip.git completed! +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Sasmik23/ip.git... +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lsyurea/ip.git to complete... +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Sasmik23/ip.git to complete... +Sep 26, 2023 2:07:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/adammangzijun/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/adammangzijun/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/adammangzijun/ip.git (master) completed! -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [213/478] Analyzing https://github.com/Originalidk/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [211/478] Analyzing https://github.com/andytoh1/ip.git (master)... +Sep 26, 2023 2:07:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/andytoh1/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/andytoh1/ip.git (master)... +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/seanpzk/ip.git completed! +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/geraldngjx/ip.git... +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/geraldngjx/ip.git to complete... +Sep 26, 2023 2:07:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Bombbird2001/ip.git (master)... +Sep 26, 2023 2:07:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Bombbird2001/ip.git (master)... +Sep 26, 2023 2:07:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Bombbird2001/ip.git (master) completed! +Sep 26, 2023 2:07:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [212/478] Analyzing https://github.com/Originalidk/ip.git (master)... +Sep 26, 2023 2:07:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Originalidk/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Originalidk/ip.git (master)... +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lsyurea/ip.git completed! +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lululwtv/ip.git... +Sep 26, 2023 2:07:56 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lululwtv/ip.git to complete... +Sep 26, 2023 2:07:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/andytoh1/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/andytoh1/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/andytoh1/ip.git (master) completed! -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Originalidk/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Originalidk/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [214/478] Analyzing https://github.com/InfiBeyond/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/InfiBeyond/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/InfiBeyond/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/InfiBeyond/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/InfiBeyond/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/InfiBeyond/ip.git (master) completed! -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator analyzeRepos -INFO: [215/478] Analyzing https://github.com/quzhetao01/ip.git (master)... -Sep 26, 2023 4:04:22 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [213/478] Analyzing https://github.com/quzhetao01/ip.git (master)... +Sep 26, 2023 2:07:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/quzhetao01/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/quzhetao01/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/geraldngjx/ip.git completed! +Sep 26, 2023 2:07:57 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/garylow2001/ip.git... +Sep 26, 2023 2:07:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/garylow2001/ip.git to complete... +Sep 26, 2023 2:07:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Originalidk/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Originalidk/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Originalidk/ip.git (master) completed! -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [216/478] Analyzing https://github.com/Bearypop/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Bearypop/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Bearypop/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [214/478] Analyzing https://github.com/hyc17003/ip.git (master)... +Sep 26, 2023 2:07:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Sasmik23/ip.git completed! +Sep 26, 2023 2:07:57 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/leontan2/ip.git... +Sep 26, 2023 2:07:57 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/leontan2/ip.git to complete... +Sep 26, 2023 2:07:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/hyc17003/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/hyc17003/ip.git (master)... +Sep 26, 2023 2:07:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/quzhetao01/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/quzhetao01/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/quzhetao01/ip.git (master) completed! -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [217/478] Analyzing https://github.com/wjayee/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wjayee/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wjayee/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [215/478] Analyzing https://github.com/InfiBeyond/ip.git (master)... +Sep 26, 2023 2:07:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/InfiBeyond/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/InfiBeyond/ip.git (master)... +Sep 26, 2023 2:07:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/garylow2001/ip.git completed! +Sep 26, 2023 2:07:58 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wamps-jp/ip.git... +Sep 26, 2023 2:07:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wamps-jp/ip.git to complete... +Sep 26, 2023 2:07:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/InfiBeyond/ip.git (master)... +Sep 26, 2023 2:07:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/InfiBeyond/ip.git (master)... +Sep 26, 2023 2:07:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/InfiBeyond/ip.git (master) completed! +Sep 26, 2023 2:07:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [216/478] Analyzing https://github.com/Bearypop/ip.git (master)... +Sep 26, 2023 2:07:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hyc17003/ip.git (master)... +Sep 26, 2023 2:07:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Bearypop/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Bearypop/ip.git (master)... +Sep 26, 2023 2:07:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hyc17003/ip.git (master)... +Sep 26, 2023 2:07:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leontan2/ip.git completed! +Sep 26, 2023 2:07:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hyc17003/ip.git (master) completed! +Sep 26, 2023 2:07:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KumChaiYin/ip.git completed! +Sep 26, 2023 2:07:58 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dickongwd/ip.git... +Sep 26, 2023 2:07:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [217/478] Analyzing https://github.com/sp4ce-cowboy/ip.git (master)... +Sep 26, 2023 2:07:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dickongwd/ip.git to complete... +Sep 26, 2023 2:07:58 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jacksonyuan256/ip.git... +Sep 26, 2023 2:07:58 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jacksonyuan256/ip.git to complete... +Sep 26, 2023 2:07:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sp4ce-cowboy/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:07:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sp4ce-cowboy/ip.git (master)... +Sep 26, 2023 2:07:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wamps-jp/ip.git completed! +Sep 26, 2023 2:07:59 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/suryanshkushwaha/ip.git... +Sep 26, 2023 2:07:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/suryanshkushwaha/ip.git to complete... +Sep 26, 2023 2:07:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dickongwd/ip.git completed! +Sep 26, 2023 2:07:59 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wr1159/ip.git... +Sep 26, 2023 2:07:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Bearypop/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:07:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wr1159/ip.git to complete... +Sep 26, 2023 2:07:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jacksonyuan256/ip.git completed! +Sep 26, 2023 2:07:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Bearypop/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:07:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Bearypop/ip.git (master) completed! -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:07:59 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Nauxe/ip.git... +Sep 26, 2023 2:07:59 PM reposense.report.ReportGenerator analyzeRepos INFO: [218/478] Analyzing https://github.com/JasonLCY-Temp/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:07:59 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Nauxe/ip.git to complete... +Sep 26, 2023 2:07:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JasonLCY-Temp/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:07:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JasonLCY-Temp/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wjayee/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wjayee/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wjayee/ip.git (master) completed! -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [219/478] Analyzing https://github.com/sp4ce-cowboy/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JasonLCY-Temp/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sp4ce-cowboy/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sp4ce-cowboy/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JasonLCY-Temp/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JasonLCY-Temp/ip.git (master) completed! -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [220/478] Analyzing https://github.com/vivienherq/ip.git (master)... -Sep 26, 2023 4:04:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/vivienherq/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/vivienherq/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:07:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sp4ce-cowboy/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sp4ce-cowboy/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sp4ce-cowboy/ip.git (master) completed! -Sep 26, 2023 4:04:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [219/478] Analyzing https://github.com/vivienherq/ip.git (master)... +Sep 26, 2023 2:08:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/vivienherq/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/vivienherq/ip.git (master)... +Sep 26, 2023 2:08:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wr1159/ip.git completed! +Sep 26, 2023 2:08:00 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yyyaohhh/ip.git... +Sep 26, 2023 2:08:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Nauxe/ip.git completed! +Sep 26, 2023 2:08:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yyyaohhh/ip.git to complete... +Sep 26, 2023 2:08:00 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhanyang01/ip.git... +Sep 26, 2023 2:08:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhanyang01/ip.git to complete... +Sep 26, 2023 2:08:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JasonLCY-Temp/ip.git (master)... +Sep 26, 2023 2:08:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JasonLCY-Temp/ip.git (master)... +Sep 26, 2023 2:08:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JasonLCY-Temp/ip.git (master) completed! +Sep 26, 2023 2:08:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [220/478] Analyzing https://github.com/jamesebond/ip.git (master)... +Sep 26, 2023 2:08:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jamesebond/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jamesebond/ip.git (master)... +Sep 26, 2023 2:08:00 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/suryanshkushwaha/ip.git completed! +Sep 26, 2023 2:08:01 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/czhiruo/ip.git... +Sep 26, 2023 2:08:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/czhiruo/ip.git to complete... +Sep 26, 2023 2:08:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/vivienherq/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [221/478] Analyzing https://github.com/victorlaiyeeteng/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/victorlaiyeeteng/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/victorlaiyeeteng/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lululwtv/ip.git completed! +Sep 26, 2023 2:08:01 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/victorpengmx/ip.git... +Sep 26, 2023 2:08:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/vivienherq/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/vivienherq/ip.git (master) completed! -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [222/478] Analyzing https://github.com/jamesebond/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jamesebond/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jamesebond/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/victorpengmx/ip.git to complete... +Sep 26, 2023 2:08:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [221/478] Analyzing https://github.com/jonyeokj/ip.git (master)... +Sep 26, 2023 2:08:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jonyeokj/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jonyeokj/ip.git (master)... +Sep 26, 2023 2:08:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhanyang01/ip.git completed! +Sep 26, 2023 2:08:01 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/longnguyentan/ip.git... +Sep 26, 2023 2:08:01 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/longnguyentan/ip.git to complete... +Sep 26, 2023 2:08:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jamesebond/ip.git (master)... +Sep 26, 2023 2:08:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jamesebond/ip.git (master)... +Sep 26, 2023 2:08:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jamesebond/ip.git (master) completed! +Sep 26, 2023 2:08:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [222/478] Analyzing https://github.com/victorlaiyeeteng/ip.git (master)... +Sep 26, 2023 2:08:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/victorlaiyeeteng/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/victorlaiyeeteng/ip.git (master)... +Sep 26, 2023 2:08:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jonyeokj/ip.git (master)... +Sep 26, 2023 2:08:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jonyeokj/ip.git (master)... +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jonyeokj/ip.git (master) completed! +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [223/478] Analyzing https://github.com/wjayee/ip.git (master)... +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wjayee/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wjayee/ip.git (master)... +Sep 26, 2023 2:08:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/victorlaiyeeteng/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/czhiruo/ip.git completed! +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Cikguseven/ip.git... +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Cikguseven/ip.git to complete... +Sep 26, 2023 2:08:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/victorlaiyeeteng/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/victorlaiyeeteng/ip.git (master) completed! -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [223/478] Analyzing https://github.com/lyuanww/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [224/478] Analyzing https://github.com/lyuanww/ip.git (master)... +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lyuanww/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lyuanww/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jamesebond/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jamesebond/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jamesebond/ip.git (master) completed! -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [224/478] Analyzing https://github.com/jonyeokj/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jonyeokj/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jonyeokj/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lyuanww/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lyuanww/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lyuanww/ip.git (master) completed! -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/longnguyentan/ip.git completed! +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Eola-Z/ip.git... +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Eola-Z/ip.git to complete... +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/victorpengmx/ip.git completed! +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jibtaf/ip.git... +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jibtaf/ip.git to complete... +Sep 26, 2023 2:08:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wjayee/ip.git (master)... +Sep 26, 2023 2:08:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wjayee/ip.git (master)... +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wjayee/ip.git (master) completed! +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yyyaohhh/ip.git completed! +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator analyzeRepos INFO: [225/478] Analyzing https://github.com/yongning0310/ip.git (master)... -Sep 26, 2023 4:04:24 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lipwei1808/ip.git... +Sep 26, 2023 2:08:02 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lipwei1808/ip.git to complete... +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yongning0310/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yongning0310/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jonyeokj/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jonyeokj/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jonyeokj/ip.git (master) completed! -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lyuanww/ip.git (master)... +Sep 26, 2023 2:08:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lyuanww/ip.git (master)... +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lyuanww/ip.git (master) completed! +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator analyzeRepos INFO: [226/478] Analyzing https://github.com/Cloud7050/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cloud7050/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cloud7050/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cikguseven/ip.git completed! +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Eola-Z/ip.git completed! +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Mohammed-Faizzzz/ip.git... +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Mohammed-Faizzzz/ip.git to complete... +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dylkaw/ip.git... +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dylkaw/ip.git to complete... +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jibtaf/ip.git completed! +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nikele2001/ip.git... +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nikele2001/ip.git to complete... +Sep 26, 2023 2:08:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yongning0310/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yongning0310/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yongning0310/ip.git (master) completed! -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [227/478] Analyzing https://github.com/LoMaply/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LoMaply/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LoMaply/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [227/478] Analyzing https://github.com/tllshan/ip.git (master)... +Sep 26, 2023 2:08:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tllshan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tllshan/ip.git (master)... +Sep 26, 2023 2:08:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cloud7050/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Cloud7050/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LoMaply/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Cloud7050/ip.git (master) completed! -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [228/478] Analyzing https://github.com/tllshan/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LoMaply/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LoMaply/ip.git (master) completed! -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator analyzeRepos -INFO: [229/478] Analyzing https://github.com/Gavino3o/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tllshan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tllshan/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Gavino3o/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Gavino3o/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [228/478] Analyzing https://github.com/LoMaply/ip.git (master)... +Sep 26, 2023 2:08:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LoMaply/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LoMaply/ip.git (master)... +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lipwei1808/ip.git completed! +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DeltonCheng/ip.git... +Sep 26, 2023 2:08:03 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DeltonCheng/ip.git to complete... +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Mohammed-Faizzzz/ip.git completed! +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChangruHenryQian/ip.git... +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChangruHenryQian/ip.git to complete... +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dylkaw/ip.git completed! +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/craigtonlian/ip.git... +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/craigtonlian/ip.git to complete... +Sep 26, 2023 2:08:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tllshan/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Gavino3o/ip.git (master)... -Sep 26, 2023 4:04:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nikele2001/ip.git completed! +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruo-x/ip.git... +Sep 26, 2023 2:08:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tllshan/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tllshan/ip.git (master) completed! -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ruo-x/ip.git to complete... +Sep 26, 2023 2:08:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [229/478] Analyzing https://github.com/Gavino3o/ip.git (master)... +Sep 26, 2023 2:08:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LoMaply/ip.git (master)... +Sep 26, 2023 2:08:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Gavino3o/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Gavino3o/ip.git (master)... +Sep 26, 2023 2:08:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LoMaply/ip.git (master)... +Sep 26, 2023 2:08:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LoMaply/ip.git (master) completed! +Sep 26, 2023 2:08:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [230/478] Analyzing https://github.com/HollaG/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Gavino3o/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Gavino3o/ip.git (master) completed! -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [231/478] Analyzing https://github.com/cheeggered/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HollaG/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HollaG/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cheeggered/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cheeggered/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DeltonCheng/ip.git completed! +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/iantsaii/ip.git... +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/iantsaii/ip.git to complete... +Sep 26, 2023 2:08:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Gavino3o/ip.git (master)... +Sep 26, 2023 2:08:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Gavino3o/ip.git (master)... +Sep 26, 2023 2:08:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Gavino3o/ip.git (master) completed! +Sep 26, 2023 2:08:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [231/478] Analyzing https://github.com/TehOPanas/ip.git (master)... +Sep 26, 2023 2:08:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HollaG/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cheeggered/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HollaG/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HollaG/ip.git (master) completed! -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [232/478] Analyzing https://github.com/TehOPanas/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cheeggered/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cheeggered/ip.git (master) completed! -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [233/478] Analyzing https://github.com/xenosf/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/craigtonlian/ip.git completed! +Sep 26, 2023 2:08:04 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wjacobw/ip.git... +Sep 26, 2023 2:08:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TehOPanas/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TehOPanas/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xenosf/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xenosf/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wjacobw/ip.git to complete... +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChangruHenryQian/ip.git completed! +Sep 26, 2023 2:08:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HollaG/ip.git (master)... +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/angkyakdifp/ip.git... +Sep 26, 2023 2:08:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HollaG/ip.git (master) completed! +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/angkyakdifp/ip.git to complete... +Sep 26, 2023 2:08:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [232/478] Analyzing https://github.com/cheeggered/ip.git (master)... +Sep 26, 2023 2:08:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cheeggered/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cheeggered/ip.git (master)... +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruo-x/ip.git completed! +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/brein62/ip.git... +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/brein62/ip.git to complete... +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/iantsaii/ip.git completed! +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nicrandomlee/ip.git... +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicrandomlee/ip.git to complete... +Sep 26, 2023 2:08:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TehOPanas/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cheeggered/ip.git (master)... +Sep 26, 2023 2:08:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TehOPanas/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TehOPanas/ip.git (master) completed! -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wjacobw/ip.git completed! +Sep 26, 2023 2:08:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [233/478] Analyzing https://github.com/xenosf/ip.git (master)... +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Bryan-Goh/ip.git... +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Bryan-Goh/ip.git to complete... +Sep 26, 2023 2:08:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xenosf/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xenosf/ip.git (master)... +Sep 26, 2023 2:08:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cheeggered/ip.git (master)... +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/angkyakdifp/ip.git completed! +Sep 26, 2023 2:08:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cheeggered/ip.git (master) completed! +Sep 26, 2023 2:08:05 PM reposense.report.ReportGenerator analyzeRepos INFO: [234/478] Analyzing https://github.com/neyapraveen/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kiatkat/ip.git... +Sep 26, 2023 2:08:05 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kiatkat/ip.git to complete... +Sep 26, 2023 2:08:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/neyapraveen/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/neyapraveen/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xenosf/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xenosf/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xenosf/ip.git (master) completed! -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator analyzeRepos -INFO: [235/478] Analyzing https://github.com/richiehx/ip.git (master)... -Sep 26, 2023 4:04:26 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/richiehx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/richiehx/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/brein62/ip.git completed! +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/MadLamprey/ip.git... +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/MadLamprey/ip.git to complete... +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicrandomlee/ip.git completed! +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xyT-T/ip.git... +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xyT-T/ip.git to complete... +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bryan-Goh/ip.git completed! +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jiakai-17/ip.git... +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jiakai-17/ip.git to complete... +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kiatkat/ip.git completed! +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nreHieW/ip.git... +Sep 26, 2023 2:08:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/neyapraveen/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/MadLamprey/ip.git completed! +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nreHieW/ip.git to complete... +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nathanielcalimag/ip.git... +Sep 26, 2023 2:08:06 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nathanielcalimag/ip.git to complete... +Sep 26, 2023 2:08:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/neyapraveen/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/neyapraveen/ip.git (master) completed! -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [236/478] Analyzing https://github.com/seantehds/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/seantehds/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/seantehds/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [235/478] Analyzing https://github.com/richiehx/ip.git (master)... +Sep 26, 2023 2:08:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/richiehx/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/richiehx/ip.git (master)... +Sep 26, 2023 2:08:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xenosf/ip.git (master)... +Sep 26, 2023 2:08:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xenosf/ip.git (master)... +Sep 26, 2023 2:08:07 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xenosf/ip.git (master) completed! +Sep 26, 2023 2:08:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [236/478] Analyzing https://github.com/AlyssaPng/ip.git (master)... +Sep 26, 2023 2:08:07 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AlyssaPng/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AlyssaPng/ip.git (master)... +Sep 26, 2023 2:08:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/richiehx/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/richiehx/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/richiehx/ip.git (master) completed! -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:07 PM reposense.report.ReportGenerator analyzeRepos INFO: [237/478] Analyzing https://github.com/leezhengjing/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xyT-T/ip.git completed! +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Saezenn/ip.git... +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Saezenn/ip.git to complete... +Sep 26, 2023 2:08:07 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/leezhengjing/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/leezhengjing/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/seantehds/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leezhengjing/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/seantehds/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leezhengjing/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/seantehds/ip.git (master) completed! -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leezhengjing/ip.git (master) completed! -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [238/478] Analyzing https://github.com/AlyssaPng/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [239/478] Analyzing https://github.com/lihongguang00/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AlyssaPng/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AlyssaPng/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lihongguang00/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lihongguang00/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jiakai-17/ip.git completed! +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jellywaiyan/ip.git... +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jellywaiyan/ip.git to complete... +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nathanielcalimag/ip.git completed! +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/marquestye/ip.git... +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marquestye/ip.git to complete... +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nreHieW/ip.git completed! +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Tang-Moyan/ip.git... +Sep 26, 2023 2:08:07 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Tang-Moyan/ip.git to complete... +Sep 26, 2023 2:08:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AlyssaPng/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AlyssaPng/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:07 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AlyssaPng/ip.git (master) completed! -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [240/478] Analyzing https://github.com/Singa-pirate/ip.git (master)... -Sep 26, 2023 4:04:27 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:07 PM reposense.report.ReportGenerator analyzeRepos +INFO: [238/478] Analyzing https://github.com/seantehds/ip.git (master)... +Sep 26, 2023 2:08:08 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/seantehds/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/seantehds/ip.git (master)... +Sep 26, 2023 2:08:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leezhengjing/ip.git (master)... +Sep 26, 2023 2:08:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leezhengjing/ip.git (master)... +Sep 26, 2023 2:08:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leezhengjing/ip.git (master) completed! +Sep 26, 2023 2:08:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [239/478] Analyzing https://github.com/Singa-pirate/ip.git (master)... +Sep 26, 2023 2:08:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Singa-pirate/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Singa-pirate/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lihongguang00/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Saezenn/ip.git completed! +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DonovanJJ/ip.git... +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DonovanJJ/ip.git to complete... +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jellywaiyan/ip.git completed! +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Sebtey/ip.git... +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Sebtey/ip.git to complete... +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marquestye/ip.git completed! +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rionshocker/ip.git... +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rionshocker/ip.git to complete... +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Tang-Moyan/ip.git completed! +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tyouwei/ip.git... +Sep 26, 2023 2:08:08 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tyouwei/ip.git to complete... +Sep 26, 2023 2:08:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Singa-pirate/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lihongguang00/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lihongguang00/ip.git (master) completed! -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [241/478] Analyzing https://github.com/songfangyl/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Singa-pirate/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:08 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Singa-pirate/ip.git (master) completed! -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [242/478] Analyzing https://github.com/vansh284/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/seantehds/ip.git (master)... +Sep 26, 2023 2:08:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [240/478] Analyzing https://github.com/songfangyl/ip.git (master)... +Sep 26, 2023 2:08:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/songfangyl/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/songfangyl/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/seantehds/ip.git (master)... +Sep 26, 2023 2:08:08 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/seantehds/ip.git (master) completed! +Sep 26, 2023 2:08:08 PM reposense.report.ReportGenerator analyzeRepos +INFO: [241/478] Analyzing https://github.com/vansh284/ip.git (master)... +Sep 26, 2023 2:08:08 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/vansh284/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/vansh284/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vansh284/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DonovanJJ/ip.git completed! +Sep 26, 2023 2:08:09 PM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Blizzeracz/ip.git... +Sep 26, 2023 2:08:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Blizzeracz/ip.git to complete... +Sep 26, 2023 2:08:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Sebtey/ip.git completed! +Sep 26, 2023 2:08:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tyouwei/ip.git completed! +Sep 26, 2023 2:08:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/songfangyl/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vansh284/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vansh284/ip.git (master) completed! -Sep 26, 2023 4:04:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/songfangyl/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vansh284/ip.git (master)... +Sep 26, 2023 2:08:09 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/songfangyl/ip.git (master) completed! -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator analyzeRepos -INFO: [243/478] Analyzing https://github.com/YeoBohShin/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [242/478] Analyzing https://github.com/lihongguang00/ip.git (master)... +Sep 26, 2023 2:08:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rionshocker/ip.git completed! +Sep 26, 2023 2:08:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vansh284/ip.git (master)... +Sep 26, 2023 2:08:09 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vansh284/ip.git (master) completed! +Sep 26, 2023 2:08:09 PM reposense.report.ReportGenerator analyzeRepos +INFO: [243/478] Analyzing https://github.com/lunaroddity/ip.git (master)... +Sep 26, 2023 2:08:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lunaroddity/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lunaroddity/ip.git (master)... +Sep 26, 2023 2:08:09 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lihongguang00/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lihongguang00/ip.git (master)... +Sep 26, 2023 2:08:09 PM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Blizzeracz/ip.git completed! +Sep 26, 2023 2:08:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lunaroddity/ip.git (master)... +Sep 26, 2023 2:08:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lunaroddity/ip.git (master)... +Sep 26, 2023 2:08:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lunaroddity/ip.git (master) completed! +Sep 26, 2023 2:08:10 PM reposense.report.ReportGenerator analyzeRepos INFO: [244/478] Analyzing https://github.com/shuenj/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/YeoBohShin/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/YeoBohShin/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:10 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shuenj/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shuenj/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/YeoBohShin/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/YeoBohShin/ip.git (master)... -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/YeoBohShin/ip.git (master) completed! -Sep 26, 2023 4:04:28 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lihongguang00/ip.git (master)... +Sep 26, 2023 2:08:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lihongguang00/ip.git (master)... +Sep 26, 2023 2:08:10 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lihongguang00/ip.git (master) completed! +Sep 26, 2023 2:08:10 PM reposense.report.ReportGenerator analyzeRepos INFO: [245/478] Analyzing https://github.com/andrechuakj/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:10 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/andrechuakj/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/andrechuakj/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shuenj/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shuenj/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:10 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shuenj/ip.git (master) completed! -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [246/478] Analyzing https://github.com/lunaroddity/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lunaroddity/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lunaroddity/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:10 PM reposense.report.ReportGenerator analyzeRepos +INFO: [246/478] Analyzing https://github.com/YeoBohShin/ip.git (master)... +Sep 26, 2023 2:08:10 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/YeoBohShin/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/YeoBohShin/ip.git (master)... +Sep 26, 2023 2:08:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/andrechuakj/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/andrechuakj/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/andrechuakj/ip.git (master) completed! -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator analyzeRepos INFO: [247/478] Analyzing https://github.com/WeeMingQing/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WeeMingQing/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WeeMingQing/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lunaroddity/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lunaroddity/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lunaroddity/ip.git (master) completed! -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [248/478] Analyzing https://github.com/antonTan96/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/antonTan96/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/antonTan96/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/antonTan96/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/antonTan96/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/YeoBohShin/ip.git (master)... +Sep 26, 2023 2:08:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/YeoBohShin/ip.git (master)... +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/YeoBohShin/ip.git (master) completed! +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [248/478] Analyzing https://github.com/aliciamichellew/ip.git (master)... +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aliciamichellew/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aliciamichellew/ip.git (master)... +Sep 26, 2023 2:08:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WeeMingQing/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/antonTan96/ip.git (master) completed! -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WeeMingQing/ip.git (master)... +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WeeMingQing/ip.git (master) completed! +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator analyzeRepos INFO: [249/478] Analyzing https://github.com/samuelmui8/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/samuelmui8/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/samuelmui8/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WeeMingQing/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WeeMingQing/ip.git (master) completed! -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [250/478] Analyzing https://github.com/owenyeo/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/owenyeo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/owenyeo/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/aliciamichellew/ip.git (master)... +Sep 26, 2023 2:08:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aliciamichellew/ip.git (master)... +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aliciamichellew/ip.git (master) completed! +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator analyzeRepos +INFO: [250/478] Analyzing https://github.com/antonTan96/ip.git (master)... +Sep 26, 2023 2:08:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/samuelmui8/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/antonTan96/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/antonTan96/ip.git (master)... +Sep 26, 2023 2:08:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/samuelmui8/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/samuelmui8/ip.git (master) completed! -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator analyzeRepos INFO: [251/478] Analyzing https://github.com/nabonitasen/ip.git (master)... -Sep 26, 2023 4:04:29 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:11 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nabonitasen/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nabonitasen/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/owenyeo/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/owenyeo/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/owenyeo/ip.git (master) completed! -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [252/478] Analyzing https://github.com/gongg21/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gongg21/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gongg21/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/antonTan96/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/antonTan96/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/antonTan96/ip.git (master) completed! +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [252/478] Analyzing https://github.com/owenyeo/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/owenyeo/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/owenyeo/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nabonitasen/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nabonitasen/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nabonitasen/ip.git (master) completed! -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [253/478] Analyzing https://github.com/erohsikivar/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/erohsikivar/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/erohsikivar/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [253/478] Analyzing https://github.com/gongg21/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gongg21/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gongg21/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/owenyeo/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/gongg21/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/owenyeo/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/owenyeo/ip.git (master) completed! +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [254/478] Analyzing https://github.com/erohsikivar/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/gongg21/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/gongg21/ip.git (master) completed! -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [254/478] Analyzing https://github.com/teozern1/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/erohsikivar/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/erohsikivar/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator analyzeRepos +INFO: [255/478] Analyzing https://github.com/teozern1/ip.git (master)... +Sep 26, 2023 2:08:12 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/teozern1/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/teozern1/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/erohsikivar/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/erohsikivar/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/erohsikivar/ip.git (master) completed! -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [255/478] Analyzing https://github.com/pzl111/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/pzl111/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/pzl111/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/erohsikivar/ip.git (master) completed! +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [256/478] Analyzing https://github.com/nicleongyj/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nicleongyj/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nicleongyj/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/teozern1/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/teozern1/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/teozern1/ip.git (master) completed! -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator analyzeRepos -INFO: [256/478] Analyzing https://github.com/aliciamichellew/ip.git (master)... -Sep 26, 2023 4:04:30 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aliciamichellew/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aliciamichellew/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [257/478] Analyzing https://github.com/pzl111/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/pzl111/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/pzl111/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicleongyj/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicleongyj/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicleongyj/ip.git (master) completed! +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [258/478] Analyzing https://github.com/Elijah5399/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Elijah5399/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Elijah5399/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/pzl111/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/pzl111/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/pzl111/ip.git (master) completed! -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [257/478] Analyzing https://github.com/WinSheng1/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [259/478] Analyzing https://github.com/WinSheng1/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Elijah5399/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WinSheng1/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WinSheng1/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/aliciamichellew/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aliciamichellew/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aliciamichellew/ip.git (master) completed! -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [258/478] Analyzing https://github.com/nicleongyj/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nicleongyj/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nicleongyj/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Elijah5399/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Elijah5399/ip.git (master) completed! +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator analyzeRepos +INFO: [260/478] Analyzing https://github.com/Chen-Kuei/ip.git (master)... +Sep 26, 2023 2:08:13 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Chen-Kuei/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Chen-Kuei/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WinSheng1/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WinSheng1/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Chen-Kuei/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WinSheng1/ip.git (master) completed! -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [259/478] Analyzing https://github.com/Elijah5399/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Elijah5399/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Elijah5399/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicleongyj/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicleongyj/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicleongyj/ip.git (master) completed! -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [260/478] Analyzing https://github.com/ryamgoh/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [261/478] Analyzing https://github.com/ryamgoh/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Chen-Kuei/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ryamgoh/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ryamgoh/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Elijah5399/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Elijah5399/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Elijah5399/ip.git (master) completed! -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [261/478] Analyzing https://github.com/Chen-Kuei/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Chen-Kuei/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Chen-Kuei/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryamgoh/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryamgoh/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryamgoh/ip.git (master) completed! -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Chen-Kuei/ip.git (master) completed! +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator analyzeRepos INFO: [262/478] Analyzing https://github.com/yucongkoo/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yucongkoo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yucongkoo/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Chen-Kuei/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Chen-Kuei/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Chen-Kuei/ip.git (master) completed! -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [263/478] Analyzing https://github.com/conradsoon/ip.git (master)... -Sep 26, 2023 4:04:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/conradsoon/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/conradsoon/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryamgoh/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryamgoh/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryamgoh/ip.git (master) completed! +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [263/478] Analyzing https://github.com/et-irl/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yucongkoo/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/et-irl/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/et-irl/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yucongkoo/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yucongkoo/ip.git (master) completed! -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [264/478] Analyzing https://github.com/GSgiansen/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [264/478] Analyzing https://github.com/marioalvaro/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/marioalvaro/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/marioalvaro/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/et-irl/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/et-irl/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/et-irl/ip.git (master) completed! +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator analyzeRepos +INFO: [265/478] Analyzing https://github.com/GSgiansen/ip.git (master)... +Sep 26, 2023 2:08:14 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/GSgiansen/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/GSgiansen/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marioalvaro/ip.git (master)... +Sep 26, 2023 2:08:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marioalvaro/ip.git (master)... +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marioalvaro/ip.git (master) completed! +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [266/478] Analyzing https://github.com/conradsoon/ip.git (master)... +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/conradsoon/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/conradsoon/ip.git (master)... +Sep 26, 2023 2:08:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GSgiansen/ip.git (master)... +Sep 26, 2023 2:08:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/conradsoon/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/conradsoon/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/conradsoon/ip.git (master) completed! -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [265/478] Analyzing https://github.com/et-irl/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/et-irl/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/et-irl/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/et-irl/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GSgiansen/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/et-irl/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/et-irl/ip.git (master) completed! -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [266/478] Analyzing https://github.com/marioalvaro/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [267/478] Analyzing https://github.com/Seonlo99/ip.git (master)... +Sep 26, 2023 2:08:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/GSgiansen/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/GSgiansen/ip.git (master) completed! -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/marioalvaro/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/marioalvaro/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [267/478] Analyzing https://github.com/Seonlo99/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator analyzeRepos +INFO: [268/478] Analyzing https://github.com/joel-foo/ip.git (master)... +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Seonlo99/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Seonlo99/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/joel-foo/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/joel-foo/ip.git (master)... +Sep 26, 2023 2:08:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Seonlo99/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Seonlo99/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Seonlo99/ip.git (master) completed! -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [268/478] Analyzing https://github.com/brendanneojw/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marioalvaro/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/brendanneojw/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/brendanneojw/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marioalvaro/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marioalvaro/ip.git (master) completed! -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator analyzeRepos INFO: [269/478] Analyzing https://github.com/tim-pipi/ip.git (master)... -Sep 26, 2023 4:04:32 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tim-pipi/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tim-pipi/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/brendanneojw/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/brendanneojw/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/brendanneojw/ip.git (master) completed! -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/joel-foo/ip.git (master)... +Sep 26, 2023 2:08:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/joel-foo/ip.git (master)... +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/joel-foo/ip.git (master) completed! +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator analyzeRepos INFO: [270/478] Analyzing https://github.com/marcellaantania/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:15 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/marcellaantania/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/marcellaantania/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tim-pipi/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tim-pipi/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tim-pipi/ip.git (master) completed! -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [271/478] Analyzing https://github.com/joel-foo/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/joel-foo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/joel-foo/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [271/478] Analyzing https://github.com/brendanneojw/ip.git (master)... +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/brendanneojw/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/brendanneojw/ip.git (master)... +Sep 26, 2023 2:08:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/marcellaantania/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/marcellaantania/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/marcellaantania/ip.git (master) completed! -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [272/478] Analyzing https://github.com/li-rongzhi/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/li-rongzhi/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/li-rongzhi/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/joel-foo/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/joel-foo/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/joel-foo/ip.git (master) completed! -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [273/478] Analyzing https://github.com/seraphimstreets/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [272/478] Analyzing https://github.com/seraphimstreets/ip.git (master)... +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/seraphimstreets/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/seraphimstreets/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/li-rongzhi/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/li-rongzhi/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/li-rongzhi/ip.git (master) completed! -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [274/478] Analyzing https://github.com/trgao/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/brendanneojw/ip.git (master)... +Sep 26, 2023 2:08:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/brendanneojw/ip.git (master)... +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/brendanneojw/ip.git (master) completed! +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [273/478] Analyzing https://github.com/li-rongzhi/ip.git (master)... +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/li-rongzhi/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/li-rongzhi/ip.git (master)... +Sep 26, 2023 2:08:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/seraphimstreets/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/trgao/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/trgao/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/seraphimstreets/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/seraphimstreets/ip.git (master) completed! -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [275/478] Analyzing https://github.com/KamiliArsyad/ip.git (master)... -Sep 26, 2023 4:04:33 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator analyzeRepos +INFO: [274/478] Analyzing https://github.com/KamiliArsyad/ip.git (master)... +Sep 26, 2023 2:08:16 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KamiliArsyad/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KamiliArsyad/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/trgao/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/trgao/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/trgao/ip.git (master) completed! -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [276/478] Analyzing https://github.com/jean-cq/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jean-cq/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jean-cq/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/li-rongzhi/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/li-rongzhi/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/li-rongzhi/ip.git (master) completed! +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [275/478] Analyzing https://github.com/trgao/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/trgao/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/trgao/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KamiliArsyad/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/KamiliArsyad/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/KamiliArsyad/ip.git (master) completed! -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [277/478] Analyzing https://github.com/lilozz2/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [276/478] Analyzing https://github.com/lilozz2/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lilozz2/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lilozz2/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jean-cq/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jean-cq/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jean-cq/ip.git (master) completed! -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator analyzeRepos -INFO: [278/478] Analyzing https://github.com/jedkohjk/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jedkohjk/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jedkohjk/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/trgao/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/trgao/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/trgao/ip.git (master) completed! +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [277/478] Analyzing https://github.com/jean-cq/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jean-cq/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jean-cq/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lilozz2/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lilozz2/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lilozz2/ip.git (master) completed! -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator analyzeRepos +INFO: [278/478] Analyzing https://github.com/jedkohjk/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jedkohjk/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jedkohjk/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jean-cq/ip.git (master)... +Sep 26, 2023 2:08:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jean-cq/ip.git (master)... +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jean-cq/ip.git (master) completed! +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator analyzeRepos INFO: [279/478] Analyzing https://github.com/yytan25/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yytan25/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yytan25/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yytan25/ip.git (master)... +Sep 26, 2023 2:08:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jedkohjk/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yytan25/ip.git (master)... +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yytan25/ip.git (master) completed! +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [280/478] Analyzing https://github.com/ryantzr1/ip.git (master)... +Sep 26, 2023 2:08:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jedkohjk/ip.git (master)... -Sep 26, 2023 4:04:34 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jedkohjk/ip.git (master) completed! -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yytan25/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [280/478] Analyzing https://github.com/ryantzr1/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [281/478] Analyzing https://github.com/maypfv/ip.git (master)... +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ryantzr1/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ryantzr1/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yytan25/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yytan25/ip.git (master) completed! -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [281/478] Analyzing https://github.com/JizhuoChen/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JizhuoChen/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JizhuoChen/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JizhuoChen/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/maypfv/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/maypfv/ip.git (master)... +Sep 26, 2023 2:08:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ryantzr1/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JizhuoChen/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JizhuoChen/ip.git (master) completed! -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [282/478] Analyzing https://github.com/maypfv/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ryantzr1/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ryantzr1/ip.git (master) completed! -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [283/478] Analyzing https://github.com/TohLiYuan/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/maypfv/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/maypfv/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator analyzeRepos +INFO: [282/478] Analyzing https://github.com/TohLiYuan/ip.git (master)... +Sep 26, 2023 2:08:18 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TohLiYuan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TohLiYuan/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/maypfv/ip.git (master)... +Sep 26, 2023 2:08:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/maypfv/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/maypfv/ip.git (master) completed! +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [283/478] Analyzing https://github.com/JizhuoChen/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JizhuoChen/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JizhuoChen/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TohLiYuan/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TohLiYuan/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TohLiYuan/ip.git (master) completed! -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator analyzeRepos INFO: [284/478] Analyzing https://github.com/Goh-Li-Ting/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/maypfv/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JizhuoChen/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Goh-Li-Ting/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Goh-Li-Ting/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/maypfv/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/maypfv/ip.git (master) completed! -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [285/478] Analyzing https://github.com/kristayeo/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kristayeo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kristayeo/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kristayeo/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kristayeo/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kristayeo/ip.git (master) completed! -Sep 26, 2023 4:04:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [286/478] Analyzing https://github.com/ChongWeiJie29/ip.git (master)... -Sep 26, 2023 4:04:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Goh-Li-Ting/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JizhuoChen/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JizhuoChen/ip.git (master) completed! +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [285/478] Analyzing https://github.com/ChongWeiJie29/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChongWeiJie29/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChongWeiJie29/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Goh-Li-Ting/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Goh-Li-Ting/ip.git (master) completed! -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [287/478] Analyzing https://github.com/derekjxtan/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/derekjxtan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/derekjxtan/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChongWeiJie29/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChongWeiJie29/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChongWeiJie29/ip.git (master) completed! -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [288/478] Analyzing https://github.com/alyssaongyx/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alyssaongyx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alyssaongyx/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/derekjxtan/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/derekjxtan/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/derekjxtan/ip.git (master) completed! -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [289/478] Analyzing https://github.com/Chandan8186/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [286/478] Analyzing https://github.com/kristayeo/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Goh-Li-Ting/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kristayeo/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kristayeo/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Goh-Li-Ting/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Goh-Li-Ting/ip.git (master) completed! +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator analyzeRepos +INFO: [287/478] Analyzing https://github.com/Chandan8186/ip.git (master)... +Sep 26, 2023 2:08:19 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Chandan8186/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Chandan8186/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/alyssaongyx/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/alyssaongyx/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/alyssaongyx/ip.git (master) completed! -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [290/478] Analyzing https://github.com/shashahchk/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shashahchk/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shashahchk/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kristayeo/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kristayeo/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kristayeo/ip.git (master) completed! +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [288/478] Analyzing https://github.com/derekjxtan/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/derekjxtan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/derekjxtan/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Chandan8186/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Chandan8186/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Chandan8186/ip.git (master) completed! -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [291/478] Analyzing https://github.com/AndrewJanong/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AndrewJanong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AndrewJanong/ip.git (master)... -Sep 26, 2023 4:04:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [289/478] Analyzing https://github.com/shashahchk/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shashahchk/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shashahchk/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/derekjxtan/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shashahchk/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/derekjxtan/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/derekjxtan/ip.git (master) completed! +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [290/478] Analyzing https://github.com/alyssaongyx/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shashahchk/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shashahchk/ip.git (master) completed! -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [292/478] Analyzing https://github.com/Kailash201/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [291/478] Analyzing https://github.com/Kailash201/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alyssaongyx/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alyssaongyx/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kailash201/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kailash201/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AndrewJanong/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AndrewJanong/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AndrewJanong/ip.git (master) completed! -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [293/478] Analyzing https://github.com/laurenlim2112/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/laurenlim2112/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/laurenlim2112/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/alyssaongyx/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/alyssaongyx/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/alyssaongyx/ip.git (master) completed! +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator analyzeRepos +INFO: [292/478] Analyzing https://github.com/lambraydon/ip.git (master)... +Sep 26, 2023 2:08:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kailash201/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kailash201/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kailash201/ip.git (master) completed! -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [294/478] Analyzing https://github.com/lambraydon/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:20 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lambraydon/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lambraydon/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/laurenlim2112/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/laurenlim2112/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/laurenlim2112/ip.git (master) completed! -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [295/478] Analyzing https://github.com/lshaoqin/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lshaoqin/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lshaoqin/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kailash201/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kailash201/ip.git (master) completed! +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [293/478] Analyzing https://github.com/laurenlim2112/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/laurenlim2112/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/laurenlim2112/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lambraydon/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lshaoqin/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lshaoqin/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lambraydon/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lshaoqin/ip.git (master) completed! -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lambraydon/ip.git (master) completed! -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [296/478] Analyzing https://github.com/peasantbird/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [297/478] Analyzing https://github.com/sk2001git/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [294/478] Analyzing https://github.com/AndrewJanong/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AndrewJanong/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AndrewJanong/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/laurenlim2112/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/laurenlim2112/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/laurenlim2112/ip.git (master) completed! +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [295/478] Analyzing https://github.com/peasantbird/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/peasantbird/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/peasantbird/ip.git (master)... -Sep 26, 2023 4:04:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sk2001git/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sk2001git/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AndrewJanong/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AndrewJanong/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AndrewJanong/ip.git (master) completed! +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [296/478] Analyzing https://github.com/lshaoqin/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lshaoqin/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lshaoqin/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/peasantbird/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/peasantbird/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/peasantbird/ip.git (master) completed! -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [298/478] Analyzing https://github.com/chonguschonguschongus/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator analyzeRepos +INFO: [297/478] Analyzing https://github.com/chonguschonguschongus/ip.git (master)... +Sep 26, 2023 2:08:21 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chonguschonguschongus/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chonguschonguschongus/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sk2001git/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sk2001git/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lshaoqin/ip.git (master)... +Sep 26, 2023 2:08:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lshaoqin/ip.git (master)... +Sep 26, 2023 2:08:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lshaoqin/ip.git (master) completed! +Sep 26, 2023 2:08:22 PM reposense.report.ReportGenerator analyzeRepos +INFO: [298/478] Analyzing https://github.com/sk2001git/ip.git (master)... +Sep 26, 2023 2:08:22 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sk2001git/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sk2001git/ip.git (master)... +Sep 26, 2023 2:08:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chonguschonguschongus/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sk2001git/ip.git (master) completed! -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chonguschonguschongus/ip.git (master)... +Sep 26, 2023 2:08:22 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chonguschonguschongus/ip.git (master) completed! +Sep 26, 2023 2:08:22 PM reposense.report.ReportGenerator analyzeRepos INFO: [299/478] Analyzing https://github.com/WangCheng0116/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:22 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WangCheng0116/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WangCheng0116/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chonguschonguschongus/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chonguschonguschongus/ip.git (master) completed! -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sk2001git/ip.git (master)... +Sep 26, 2023 2:08:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WangCheng0116/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sk2001git/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sk2001git/ip.git (master) completed! +Sep 26, 2023 2:08:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WangCheng0116/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepos INFO: [300/478] Analyzing https://github.com/chewjh1234/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WangCheng0116/ip.git (master) completed! +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [301/478] Analyzing https://github.com/elaineshijie/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/elaineshijie/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/elaineshijie/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chewjh1234/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chewjh1234/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/elaineshijie/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chewjh1234/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/elaineshijie/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/elaineshijie/ip.git (master) completed! +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [302/478] Analyzing https://github.com/lynnlow175/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chewjh1234/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WangCheng0116/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chewjh1234/ip.git (master) completed! -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [301/478] Analyzing https://github.com/elaineshijie/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/elaineshijie/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/elaineshijie/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WangCheng0116/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WangCheng0116/ip.git (master) completed! -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [302/478] Analyzing https://github.com/lynnlow175/ip.git (master)... -Sep 26, 2023 4:04:38 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepos +INFO: [303/478] Analyzing https://github.com/lordidiot/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lynnlow175/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lynnlow175/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lordidiot/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lordidiot/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lynnlow175/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/elaineshijie/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lynnlow175/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lynnlow175/ip.git (master) completed! -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [303/478] Analyzing https://github.com/lordidiot/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/elaineshijie/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/elaineshijie/ip.git (master) completed! -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepos INFO: [304/478] Analyzing https://github.com/chew01/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lordidiot/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lordidiot/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lordidiot/ip.git (master)... +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chew01/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chew01/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lordidiot/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lordidiot/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lordidiot/ip.git (master) completed! -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator analyzeRepos INFO: [305/478] Analyzing https://github.com/RSXIX/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:23 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RSXIX/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RSXIX/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chew01/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chew01/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chew01/ip.git (master) completed! -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [306/478] Analyzing https://github.com/juliusgambe/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/juliusgambe/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/juliusgambe/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/RSXIX/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chew01/ip.git (master)... +Sep 26, 2023 2:08:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/RSXIX/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/RSXIX/ip.git (master) completed! -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [307/478] Analyzing https://github.com/zhonghan721/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [306/478] Analyzing https://github.com/zhonghan721/ip.git (master)... +Sep 26, 2023 2:08:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chew01/ip.git (master)... +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chew01/ip.git (master) completed! +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [307/478] Analyzing https://github.com/juliusgambe/ip.git (master)... +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhonghan721/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhonghan721/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/juliusgambe/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/juliusgambe/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/juliusgambe/ip.git (master) completed! -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator analyzeRepos -INFO: [308/478] Analyzing https://github.com/teozhengyang/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/teozhengyang/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/teozhengyang/ip.git (master)... -Sep 26, 2023 4:04:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/juliusgambe/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/juliusgambe/ip.git (master)... +Sep 26, 2023 2:08:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zhonghan721/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zhonghan721/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zhonghan721/ip.git (master) completed! -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [309/478] Analyzing https://github.com/WZWren/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [308/478] Analyzing https://github.com/WZWren/ip.git (master)... +Sep 26, 2023 2:08:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/juliusgambe/ip.git (master)... +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WZWren/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WZWren/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/juliusgambe/ip.git (master)... +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/juliusgambe/ip.git (master) completed! +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator analyzeRepos +INFO: [309/478] Analyzing https://github.com/inezkok/ip.git (master)... +Sep 26, 2023 2:08:24 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/inezkok/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/inezkok/ip.git (master)... +Sep 26, 2023 2:08:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WZWren/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WZWren/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teozhengyang/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WZWren/ip.git (master) completed! -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [310/478] Analyzing https://github.com/inezkok/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/inezkok/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/inezkok/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teozhengyang/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teozhengyang/ip.git (master) completed! -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [311/478] Analyzing https://github.com/wasjoe1/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/inezkok/ip.git (master)... +Sep 26, 2023 2:08:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [310/478] Analyzing https://github.com/wasjoe1/ip.git (master)... +Sep 26, 2023 2:08:25 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wasjoe1/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wasjoe1/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/inezkok/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/inezkok/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/inezkok/ip.git (master) completed! -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [312/478] Analyzing https://github.com/kokrui/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kokrui/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kokrui/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [311/478] Analyzing https://github.com/teozhengyang/ip.git (master)... +Sep 26, 2023 2:08:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/teozhengyang/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/teozhengyang/ip.git (master)... +Sep 26, 2023 2:08:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wasjoe1/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wasjoe1/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:25 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wasjoe1/ip.git (master) completed! -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:25 PM reposense.report.ReportGenerator analyzeRepos +INFO: [312/478] Analyzing https://github.com/jinyang628/ip.git (master)... +Sep 26, 2023 2:08:25 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jinyang628/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jinyang628/ip.git (master)... +Sep 26, 2023 2:08:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teozhengyang/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teozhengyang/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teozhengyang/ip.git (master) completed! +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepos INFO: [313/478] Analyzing https://github.com/nananakx-x/ip.git (master)... -Sep 26, 2023 4:04:40 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nananakx-x/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nananakx-x/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kokrui/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kokrui/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kokrui/ip.git (master) completed! -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jinyang628/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jinyang628/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jinyang628/ip.git (master) completed! +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepos INFO: [314/478] Analyzing https://github.com/AnnabelTing/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AnnabelTing/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AnnabelTing/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nananakx-x/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nananakx-x/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nananakx-x/ip.git (master) completed! -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [315/478] Analyzing https://github.com/jinyang628/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jinyang628/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jinyang628/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [315/478] Analyzing https://github.com/timetraveller-123/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AnnabelTing/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AnnabelTing/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AnnabelTing/ip.git (master) completed! -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [316/478] Analyzing https://github.com/timetraveller-123/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/timetraveller-123/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/timetraveller-123/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jinyang628/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jinyang628/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jinyang628/ip.git (master) completed! -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [317/478] Analyzing https://github.com/Jweng88/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jweng88/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jweng88/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AnnabelTing/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AnnabelTing/ip.git (master) completed! +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [316/478] Analyzing https://github.com/kokrui/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kokrui/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kokrui/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/timetraveller-123/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/timetraveller-123/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/timetraveller-123/ip.git (master) completed! -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepos +INFO: [317/478] Analyzing https://github.com/Jweng88/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jweng88/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jweng88/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kokrui/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kokrui/ip.git (master)... +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kokrui/ip.git (master) completed! +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator analyzeRepos INFO: [318/478] Analyzing https://github.com/ylyma/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:26 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ylyma/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ylyma/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Jweng88/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jweng88/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jweng88/ip.git (master) completed! -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator analyzeRepos -INFO: [319/478] Analyzing https://github.com/jovkusuma/ip.git (master)... -Sep 26, 2023 4:04:41 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jovkusuma/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jovkusuma/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [319/478] Analyzing https://github.com/EricXiong420/ip.git (master)... +Sep 26, 2023 2:08:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/EricXiong420/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/EricXiong420/ip.git (master)... +Sep 26, 2023 2:08:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ylyma/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ylyma/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ylyma/ip.git (master) completed! -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [320/478] Analyzing https://github.com/bhnuka/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bhnuka/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bhnuka/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [320/478] Analyzing https://github.com/jovkusuma/ip.git (master)... +Sep 26, 2023 2:08:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jovkusuma/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jovkusuma/ip.git (master)... +Sep 26, 2023 2:08:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jovkusuma/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jovkusuma/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:27 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jovkusuma/ip.git (master) completed! -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [321/478] Analyzing https://github.com/EricXiong420/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/EricXiong420/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/EricXiong420/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bhnuka/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bhnuka/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bhnuka/ip.git (master) completed! -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:27 PM reposense.report.ReportGenerator analyzeRepos +INFO: [321/478] Analyzing https://github.com/bhnuka/ip.git (master)... +Sep 26, 2023 2:08:27 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bhnuka/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bhnuka/ip.git (master)... +Sep 26, 2023 2:08:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/EricXiong420/ip.git (master)... +Sep 26, 2023 2:08:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/EricXiong420/ip.git (master)... +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/EricXiong420/ip.git (master) completed! +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [322/478] Analyzing https://github.com/J-hta-n/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/J-hta-n/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/J-hta-n/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/J-hta-n/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/J-hta-n/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/J-hta-n/ip.git (master) completed! -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bhnuka/ip.git (master)... +Sep 26, 2023 2:08:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bhnuka/ip.git (master)... +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bhnuka/ip.git (master) completed! +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [323/478] Analyzing https://github.com/Tim-Siu/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Tim-Siu/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Tim-Siu/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/EricXiong420/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/EricXiong420/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/EricXiong420/ip.git (master) completed! -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/J-hta-n/ip.git (master)... +Sep 26, 2023 2:08:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/J-hta-n/ip.git (master)... +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/J-hta-n/ip.git (master) completed! +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator analyzeRepos INFO: [324/478] Analyzing https://github.com/yarnmengnus/ip.git (master)... -Sep 26, 2023 4:04:42 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yarnmengnus/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yarnmengnus/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Tim-Siu/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Tim-Siu/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Tim-Siu/ip.git (master) completed! -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [325/478] Analyzing https://github.com/ngeeyonglim/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator analyzeRepos +INFO: [325/478] Analyzing https://github.com/sopa301/ip.git (master)... +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sopa301/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sopa301/ip.git (master)... +Sep 26, 2023 2:08:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yarnmengnus/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ngeeyonglim/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ngeeyonglim/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yarnmengnus/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yarnmengnus/ip.git (master) completed! -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [326/478] Analyzing https://github.com/sopa301/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sopa301/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sopa301/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ngeeyonglim/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ngeeyonglim/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ngeeyonglim/ip.git (master) completed! -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator analyzeRepos -INFO: [327/478] Analyzing https://github.com/ItsTYtan/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ItsTYtan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ItsTYtan/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator analyzeRepos +INFO: [326/478] Analyzing https://github.com/ngeeyonglim/ip.git (master)... +Sep 26, 2023 2:08:28 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ngeeyonglim/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ngeeyonglim/ip.git (master)... +Sep 26, 2023 2:08:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sopa301/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sopa301/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sopa301/ip.git (master) completed! -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [327/478] Analyzing https://github.com/ItsTYtan/ip.git (master)... +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ItsTYtan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ItsTYtan/ip.git (master)... +Sep 26, 2023 2:08:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ngeeyonglim/ip.git (master)... +Sep 26, 2023 2:08:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ngeeyonglim/ip.git (master)... +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ngeeyonglim/ip.git (master) completed! +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator analyzeRepos INFO: [328/478] Analyzing https://github.com/javinchua/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/javinchua/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/javinchua/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ItsTYtan/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ItsTYtan/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ItsTYtan/ip.git (master) completed! -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator analyzeRepos INFO: [329/478] Analyzing https://github.com/amosting/ip.git (master)... -Sep 26, 2023 4:04:43 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/amosting/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/amosting/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/javinchua/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/amosting/ip.git (master)... +Sep 26, 2023 2:08:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/javinchua/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/amosting/ip.git (master)... +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/javinchua/ip.git (master) completed! -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [330/478] Analyzing https://github.com/Cleon2/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/amosting/ip.git (master) completed! +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [330/478] Analyzing https://github.com/LicongHuang/ip.git (master)... +Sep 26, 2023 2:08:29 PM reposense.report.ReportGenerator analyzeRepos +INFO: [331/478] Analyzing https://github.com/Cleon2/ip.git (master)... +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LicongHuang/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LicongHuang/ip.git (master)... +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cleon2/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cleon2/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/amosting/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/amosting/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/amosting/ip.git (master) completed! -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [331/478] Analyzing https://github.com/ketweeen/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LicongHuang/ip.git (master)... +Sep 26, 2023 2:08:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LicongHuang/ip.git (master)... +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LicongHuang/ip.git (master) completed! +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [332/478] Analyzing https://github.com/ketweeen/ip.git (master)... +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ketweeen/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ketweeen/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ketweeen/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ketweeen/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ketweeen/ip.git (master) completed! -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [332/478] Analyzing https://github.com/sudarshan2401/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cleon2/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sudarshan2401/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sudarshan2401/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Cleon2/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Cleon2/ip.git (master) completed! -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [333/478] Analyzing https://github.com/flexibo/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/flexibo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/flexibo/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sudarshan2401/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sudarshan2401/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sudarshan2401/ip.git (master) completed! -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [333/478] Analyzing https://github.com/sudarshan2401/ip.git (master)... +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sudarshan2401/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sudarshan2401/ip.git (master)... +Sep 26, 2023 2:08:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ketweeen/ip.git (master)... +Sep 26, 2023 2:08:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ketweeen/ip.git (master)... +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ketweeen/ip.git (master) completed! +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator analyzeRepos INFO: [334/478] Analyzing https://github.com/wui-hong/ip.git (master)... -Sep 26, 2023 4:04:44 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wui-hong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wui-hong/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/flexibo/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/flexibo/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wui-hong/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/flexibo/ip.git (master) completed! -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [335/478] Analyzing https://github.com/Respirayson/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wui-hong/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wui-hong/ip.git (master) completed! -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [336/478] Analyzing https://github.com/LicongHuang/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:30 PM reposense.report.ReportGenerator analyzeRepos +INFO: [335/478] Analyzing https://github.com/flexibo/ip.git (master)... +Sep 26, 2023 2:08:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sudarshan2401/ip.git (master)... +Sep 26, 2023 2:08:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sudarshan2401/ip.git (master)... +Sep 26, 2023 2:08:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sudarshan2401/ip.git (master) completed! +Sep 26, 2023 2:08:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [336/478] Analyzing https://github.com/Respirayson/ip.git (master)... +Sep 26, 2023 2:08:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/flexibo/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/flexibo/ip.git (master)... +Sep 26, 2023 2:08:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Respirayson/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Respirayson/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LicongHuang/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LicongHuang/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LicongHuang/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LicongHuang/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LicongHuang/ip.git (master) completed! -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [337/478] Analyzing https://github.com/shishirbychapur/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shishirbychapur/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shishirbychapur/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Respirayson/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Respirayson/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:31 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Respirayson/ip.git (master) completed! -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:31 PM reposense.report.ReportGenerator analyzeRepos +INFO: [337/478] Analyzing https://github.com/shishirbychapur/ip.git (master)... +Sep 26, 2023 2:08:31 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shishirbychapur/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shishirbychapur/ip.git (master)... +Sep 26, 2023 2:08:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/flexibo/ip.git (master)... +Sep 26, 2023 2:08:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/flexibo/ip.git (master)... +Sep 26, 2023 2:08:31 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/flexibo/ip.git (master) completed! +Sep 26, 2023 2:08:31 PM reposense.report.ReportGenerator analyzeRepos INFO: [338/478] Analyzing https://github.com/sunzihan23/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:31 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sunzihan23/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sunzihan23/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shishirbychapur/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shishirbychapur/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shishirbychapur/ip.git (master) completed! -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator analyzeRepos INFO: [339/478] Analyzing https://github.com/wj331/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sunzihan23/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wj331/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wj331/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sunzihan23/ip.git (master)... +Sep 26, 2023 2:08:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sunzihan23/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sunzihan23/ip.git (master) completed! -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator analyzeRepos INFO: [340/478] Analyzing https://github.com/tjch-o/ip.git (master)... -Sep 26, 2023 4:04:45 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tjch-o/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tjch-o/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wj331/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tjch-o/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wj331/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wj331/ip.git (master) completed! -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator analyzeRepos INFO: [341/478] Analyzing https://github.com/Chrainx/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tjch-o/ip.git (master)... +Sep 26, 2023 2:08:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tjch-o/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tjch-o/ip.git (master) completed! -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [342/478] Analyzing https://github.com/licongshen12/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/licongshen12/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/licongshen12/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator analyzeRepos +INFO: [342/478] Analyzing https://github.com/mamayuan/ip.git (master)... +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Chrainx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Chrainx/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/licongshen12/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/licongshen12/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/licongshen12/ip.git (master) completed! -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator analyzeRepos -INFO: [343/478] Analyzing https://github.com/mamayuan/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Chrainx/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:32 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/mamayuan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/mamayuan/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Chrainx/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Chrainx/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mamayuan/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Chrainx/ip.git (master) completed! -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [343/478] Analyzing https://github.com/licongshen12/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mamayuan/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mamayuan/ip.git (master) completed! +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/licongshen12/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/licongshen12/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator analyzeRepos INFO: [344/478] Analyzing https://github.com/ong-wei-hong/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ong-wei-hong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ong-wei-hong/ip.git (master)... -Sep 26, 2023 4:04:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mamayuan/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ong-wei-hong/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mamayuan/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mamayuan/ip.git (master) completed! -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/licongshen12/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/licongshen12/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/licongshen12/ip.git (master) completed! +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator analyzeRepos INFO: [345/478] Analyzing https://github.com/tanboonkhong/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ong-wei-hong/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ong-wei-hong/ip.git (master) completed! -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [346/478] Analyzing https://github.com/AlfredBeNoel/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ong-wei-hong/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanboonkhong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanboonkhong/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AlfredBeNoel/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AlfredBeNoel/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ong-wei-hong/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ong-wei-hong/ip.git (master) completed! +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [346/478] Analyzing https://github.com/cbj252/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cbj252/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cbj252/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanboonkhong/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanboonkhong/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanboonkhong/ip.git (master) completed! -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [347/478] Analyzing https://github.com/cbj252/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cbj252/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cbj252/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AlfredBeNoel/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AlfredBeNoel/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AlfredBeNoel/ip.git (master) completed! -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [348/478] Analyzing https://github.com/keaganpzh/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/keaganpzh/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/keaganpzh/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:33 PM reposense.report.ReportGenerator analyzeRepos +INFO: [347/478] Analyzing https://github.com/AlfredBeNoel/ip.git (master)... +Sep 26, 2023 2:08:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cbj252/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AlfredBeNoel/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AlfredBeNoel/ip.git (master)... +Sep 26, 2023 2:08:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cbj252/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cbj252/ip.git (master) completed! -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator analyzeRepos +INFO: [348/478] Analyzing https://github.com/keaganpzh/ip.git (master)... +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/keaganpzh/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/keaganpzh/ip.git (master)... +Sep 26, 2023 2:08:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AlfredBeNoel/ip.git (master)... +Sep 26, 2023 2:08:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AlfredBeNoel/ip.git (master)... +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AlfredBeNoel/ip.git (master) completed! +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator analyzeRepos INFO: [349/478] Analyzing https://github.com/ElginTZM/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ElginTZM/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ElginTZM/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ElginTZM/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ElginTZM/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ElginTZM/ip.git (master) completed! -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [350/478] Analyzing https://github.com/cmHuang777/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/keaganpzh/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cmHuang777/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cmHuang777/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/keaganpzh/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/keaganpzh/ip.git (master) completed! -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [351/478] Analyzing https://github.com/LimJH2002/ip.git (master)... -Sep 26, 2023 4:04:47 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator analyzeRepos +INFO: [350/478] Analyzing https://github.com/cmHuang777/ip.git (master)... +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cmHuang777/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cmHuang777/ip.git (master)... +Sep 26, 2023 2:08:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ElginTZM/ip.git (master)... +Sep 26, 2023 2:08:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ElginTZM/ip.git (master)... +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ElginTZM/ip.git (master) completed! +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator analyzeRepos +INFO: [351/478] Analyzing https://github.com/xxiaoweii/ip.git (master)... +Sep 26, 2023 2:08:34 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xxiaoweii/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xxiaoweii/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cmHuang777/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cmHuang777/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cmHuang777/ip.git (master) completed! +Sep 26, 2023 2:08:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [352/478] Analyzing https://github.com/rayyan35p/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rayyan35p/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rayyan35p/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xxiaoweii/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xxiaoweii/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xxiaoweii/ip.git (master) completed! +Sep 26, 2023 2:08:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [353/478] Analyzing https://github.com/WeeeHung/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WeeeHung/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WeeeHung/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rayyan35p/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rayyan35p/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rayyan35p/ip.git (master) completed! +Sep 26, 2023 2:08:35 PM reposense.report.ReportGenerator analyzeRepos +INFO: [354/478] Analyzing https://github.com/LimJH2002/ip.git (master)... +Sep 26, 2023 2:08:35 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LimJH2002/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LimJH2002/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WeeeHung/ip.git (master)... +Sep 26, 2023 2:08:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WeeeHung/ip.git (master)... +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WeeeHung/ip.git (master) completed! +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [355/478] Analyzing https://github.com/dhruvir29/ip.git (master)... +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dhruvir29/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dhruvir29/ip.git (master)... +Sep 26, 2023 2:08:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LimJH2002/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cmHuang777/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LimJH2002/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cmHuang777/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LimJH2002/ip.git (master) completed! -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cmHuang777/ip.git (master) completed! -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [352/478] Analyzing https://github.com/xxiaoweii/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [353/478] Analyzing https://github.com/dhruvir29/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xxiaoweii/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xxiaoweii/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dhruvir29/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dhruvir29/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [356/478] Analyzing https://github.com/LinWanLeii/ip.git (master)... +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LinWanLeii/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LinWanLeii/ip.git (master)... +Sep 26, 2023 2:08:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dhruvir29/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xxiaoweii/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dhruvir29/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dhruvir29/ip.git (master) completed! -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [354/478] Analyzing https://github.com/rayyan35p/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xxiaoweii/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xxiaoweii/ip.git (master) completed! -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [355/478] Analyzing https://github.com/LinWanLeii/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rayyan35p/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rayyan35p/ip.git (master)... -Sep 26, 2023 4:04:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LinWanLeii/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LinWanLeii/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [357/478] Analyzing https://github.com/Song-Mengfei/ip.git (master)... +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Song-Mengfei/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Song-Mengfei/ip.git (master)... +Sep 26, 2023 2:08:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LinWanLeii/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rayyan35p/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LinWanLeii/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LinWanLeii/ip.git (master) completed! -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [356/478] Analyzing https://github.com/Song-Mengfei/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rayyan35p/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rayyan35p/ip.git (master) completed! -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [357/478] Analyzing https://github.com/jinyuan0425/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Song-Mengfei/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Song-Mengfei/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator analyzeRepos +INFO: [358/478] Analyzing https://github.com/jinyuan0425/ip.git (master)... +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jinyuan0425/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jinyuan0425/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Song-Mengfei/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Song-Mengfei/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Song-Mengfei/ip.git (master) completed! -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [358/478] Analyzing https://github.com/WeeeHung/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jinyuan0425/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jinyuan0425/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jinyuan0425/ip.git (master) completed! -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator analyzeRepos INFO: [359/478] Analyzing https://github.com/tiif/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WeeeHung/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WeeeHung/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:36 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tiif/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tiif/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jinyuan0425/ip.git (master)... +Sep 26, 2023 2:08:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jinyuan0425/ip.git (master)... +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jinyuan0425/ip.git (master) completed! +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [360/478] Analyzing https://github.com/papataco14/ip.git (master)... +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/papataco14/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/papataco14/ip.git (master)... +Sep 26, 2023 2:08:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tiif/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tiif/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tiif/ip.git (master) completed! -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [360/478] Analyzing https://github.com/nicholascher/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nicholascher/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nicholascher/ip.git (master)... -Sep 26, 2023 4:04:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WeeeHung/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WeeeHung/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WeeeHung/ip.git (master) completed! -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [361/478] Analyzing https://github.com/papataco14/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/papataco14/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/papataco14/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicholascher/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicholascher/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicholascher/ip.git (master) completed! -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [362/478] Analyzing https://github.com/hcs1203/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [361/478] Analyzing https://github.com/hcs1203/ip.git (master)... +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hcs1203/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hcs1203/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/hcs1203/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/hcs1203/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/hcs1203/ip.git (master) completed! -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [363/478] Analyzing https://github.com/KamJiaYue/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [362/478] Analyzing https://github.com/KamJiaYue/ip.git (master)... +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KamJiaYue/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KamJiaYue/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/papataco14/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/papataco14/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/papataco14/ip.git (master) completed! -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [364/478] Analyzing https://github.com/ivyy-poison/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ivyy-poison/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ivyy-poison/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ivyy-poison/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ivyy-poison/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ivyy-poison/ip.git (master) completed! -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [365/478] Analyzing https://github.com/PohSayKeong/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [363/478] Analyzing https://github.com/PohSayKeong/ip.git (master)... +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/PohSayKeong/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/PohSayKeong/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PohSayKeong/ip.git (master)... +Sep 26, 2023 2:08:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PohSayKeong/ip.git (master)... +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PohSayKeong/ip.git (master) completed! +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator analyzeRepos +INFO: [364/478] Analyzing https://github.com/nicholascher/ip.git (master)... +Sep 26, 2023 2:08:37 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nicholascher/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nicholascher/ip.git (master)... +Sep 26, 2023 2:08:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KamJiaYue/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/KamJiaYue/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:38 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/KamJiaYue/ip.git (master) completed! -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [366/478] Analyzing https://github.com/NereusWB922/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [365/478] Analyzing https://github.com/NereusWB922/ip.git (master)... +Sep 26, 2023 2:08:38 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/NereusWB922/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/NereusWB922/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PohSayKeong/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PohSayKeong/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PohSayKeong/ip.git (master) completed! -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicholascher/ip.git (master)... +Sep 26, 2023 2:08:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicholascher/ip.git (master)... +Sep 26, 2023 2:08:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicholascher/ip.git (master) completed! +Sep 26, 2023 2:08:38 PM reposense.report.ReportGenerator analyzeRepos +INFO: [366/478] Analyzing https://github.com/ivyy-poison/ip.git (master)... +Sep 26, 2023 2:08:38 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ivyy-poison/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ivyy-poison/ip.git (master)... +Sep 26, 2023 2:08:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ivyy-poison/ip.git (master)... +Sep 26, 2023 2:08:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ivyy-poison/ip.git (master)... +Sep 26, 2023 2:08:38 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ivyy-poison/ip.git (master) completed! +Sep 26, 2023 2:08:38 PM reposense.report.ReportGenerator analyzeRepos INFO: [367/478] Analyzing https://github.com/jacobcuison/ip.git (master)... -Sep 26, 2023 4:04:50 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:38 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jacobcuison/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jacobcuison/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jacobcuison/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jacobcuison/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jacobcuison/ip.git (master) completed! -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [368/478] Analyzing https://github.com/ji-just-ji/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ji-just-ji/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ji-just-ji/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NereusWB922/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/NereusWB922/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NereusWB922/ip.git (master) completed! -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [368/478] Analyzing https://github.com/ji-just-ji/ip.git (master)... +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ji-just-ji/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ji-just-ji/ip.git (master)... +Sep 26, 2023 2:08:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jacobcuison/ip.git (master)... +Sep 26, 2023 2:08:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jacobcuison/ip.git (master)... +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jacobcuison/ip.git (master) completed! +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator analyzeRepos INFO: [369/478] Analyzing https://github.com/rocketninja7/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rocketninja7/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rocketninja7/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ji-just-ji/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ji-just-ji/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/rocketninja7/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ji-just-ji/ip.git (master)... +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ji-just-ji/ip.git (master) completed! -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [370/478] Analyzing https://github.com/zekone/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [370/478] Analyzing https://github.com/kohkaijie/ip.git (master)... +Sep 26, 2023 2:08:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/rocketninja7/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/rocketninja7/ip.git (master) completed! -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zekone/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zekone/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator analyzeRepos -INFO: [371/478] Analyzing https://github.com/kohkaijie/ip.git (master)... -Sep 26, 2023 4:04:51 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator analyzeRepos +INFO: [371/478] Analyzing https://github.com/zekone/ip.git (master)... +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kohkaijie/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kohkaijie/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:39 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zekone/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zekone/ip.git (master)... +Sep 26, 2023 2:08:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zekone/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zekone/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kohkaijie/ip.git (master)... +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zekone/ip.git (master) completed! -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator analyzeRepos INFO: [372/478] Analyzing https://github.com/markgcera/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/markgcera/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/markgcera/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kohkaijie/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kohkaijie/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kohkaijie/ip.git (master) completed! -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [373/478] Analyzing https://github.com/StevenLiudw/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/StevenLiudw/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/StevenLiudw/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [373/478] Analyzing https://github.com/PearlynnT/ip.git (master)... +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PearlynnT/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PearlynnT/ip.git (master)... +Sep 26, 2023 2:08:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/markgcera/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/markgcera/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/markgcera/ip.git (master) completed! -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [374/478] Analyzing https://github.com/PearlynnT/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PearlynnT/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PearlynnT/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/StevenLiudw/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/StevenLiudw/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/StevenLiudw/ip.git (master) completed! -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [375/478] Analyzing https://github.com/mounilsankar/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mounilsankar/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mounilsankar/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [374/478] Analyzing https://github.com/StevenLiudw/ip.git (master)... +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/StevenLiudw/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/StevenLiudw/ip.git (master)... +Sep 26, 2023 2:08:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/PearlynnT/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/PearlynnT/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/PearlynnT/ip.git (master) completed! -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [376/478] Analyzing https://github.com/TeeRenJing/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator analyzeRepos +INFO: [375/478] Analyzing https://github.com/TeeRenJing/ip.git (master)... +Sep 26, 2023 2:08:40 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TeeRenJing/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TeeRenJing/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mounilsankar/ip.git (master)... -Sep 26, 2023 4:04:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mounilsankar/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mounilsankar/ip.git (master) completed! -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [377/478] Analyzing https://github.com/zannloo/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zannloo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zannloo/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TeeRenJing/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/StevenLiudw/ip.git (master)... +Sep 26, 2023 2:08:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TeeRenJing/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TeeRenJing/ip.git (master) completed! -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [378/478] Analyzing https://github.com/dloh2236/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [376/478] Analyzing https://github.com/dloh2236/ip.git (master)... +Sep 26, 2023 2:08:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/StevenLiudw/ip.git (master)... +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dloh2236/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dloh2236/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/StevenLiudw/ip.git (master) completed! +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [377/478] Analyzing https://github.com/zannloo/ip.git (master)... +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zannloo/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zannloo/ip.git (master)... +Sep 26, 2023 2:08:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zannloo/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zannloo/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zannloo/ip.git (master) completed! -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [379/478] Analyzing https://github.com/junnengsoo/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [378/478] Analyzing https://github.com/junnengsoo/ip.git (master)... +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/junnengsoo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/junnengsoo/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dloh2236/ip.git (master)... +Sep 26, 2023 2:08:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/junnengsoo/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dloh2236/ip.git (master)... +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dloh2236/ip.git (master) completed! +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [379/478] Analyzing https://github.com/Kokseng1/ip.git (master)... +Sep 26, 2023 2:08:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/junnengsoo/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/junnengsoo/ip.git (master) completed! -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [380/478] Analyzing https://github.com/Kokseng1/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator analyzeRepos +INFO: [380/478] Analyzing https://github.com/mounilsankar/ip.git (master)... +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kokseng1/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kokseng1/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dloh2236/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dloh2236/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dloh2236/ip.git (master) completed! -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [381/478] Analyzing https://github.com/freshcabbage123/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/freshcabbage123/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/freshcabbage123/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:41 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mounilsankar/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mounilsankar/ip.git (master)... +Sep 26, 2023 2:08:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kokseng1/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kokseng1/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kokseng1/ip.git (master) completed! -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [381/478] Analyzing https://github.com/freshcabbage123/ip.git (master)... +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/freshcabbage123/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/freshcabbage123/ip.git (master)... +Sep 26, 2023 2:08:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mounilsankar/ip.git (master)... +Sep 26, 2023 2:08:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mounilsankar/ip.git (master)... +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mounilsankar/ip.git (master) completed! +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator analyzeRepos INFO: [382/478] Analyzing https://github.com/itsNatTan/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/itsNatTan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/itsNatTan/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/freshcabbage123/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/freshcabbage123/ip.git (master)... -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/freshcabbage123/ip.git (master) completed! -Sep 26, 2023 4:04:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [383/478] Analyzing https://github.com/alientian/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alientian/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alientian/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [383/478] Analyzing https://github.com/ZD292/ip.git (master)... +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ZD292/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ZD292/ip.git (master)... +Sep 26, 2023 2:08:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/itsNatTan/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/itsNatTan/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/itsNatTan/ip.git (master) completed! -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [384/478] Analyzing https://github.com/ZD292/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ZD292/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ZD292/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator analyzeRepos +INFO: [384/478] Analyzing https://github.com/alientian/ip.git (master)... +Sep 26, 2023 2:08:42 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alientian/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alientian/ip.git (master)... +Sep 26, 2023 2:08:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alientian/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alientian/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alientian/ip.git (master) completed! -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:43 PM reposense.report.ReportGenerator analyzeRepos INFO: [385/478] Analyzing https://github.com/frrrrry/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/frrrrry/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/frrrrry/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ZD292/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ZD292/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ZD292/ip.git (master) completed! -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:43 PM reposense.report.ReportGenerator analyzeRepos INFO: [386/478] Analyzing https://github.com/tjingsheng/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tjingsheng/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tjingsheng/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/frrrrry/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/frrrrry/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:43 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/frrrrry/ip.git (master) completed! -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [387/478] Analyzing https://github.com/MagnificentCreature/ip.git (master)... -Sep 26, 2023 4:04:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/MagnificentCreature/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/MagnificentCreature/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/MagnificentCreature/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/MagnificentCreature/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/MagnificentCreature/ip.git (master) completed! -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [388/478] Analyzing https://github.com/wanghejin/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:43 PM reposense.report.ReportGenerator analyzeRepos +INFO: [387/478] Analyzing https://github.com/wanghejin/ip.git (master)... +Sep 26, 2023 2:08:43 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wanghejin/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wanghejin/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tjingsheng/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wanghejin/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wanghejin/ip.git (master)... +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wanghejin/ip.git (master) completed! +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [388/478] Analyzing https://github.com/MagnificentCreature/ip.git (master)... +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/MagnificentCreature/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/MagnificentCreature/ip.git (master)... +Sep 26, 2023 2:08:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tjingsheng/ip.git (master)... +Sep 26, 2023 2:08:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tjingsheng/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tjingsheng/ip.git (master) completed! -Sep 26, 2023 4:04:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wanghejin/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator analyzeRepos INFO: [389/478] Analyzing https://github.com/andrefoo/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wanghejin/ip.git (master) completed! -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [390/478] Analyzing https://github.com/tohpinren/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/andrefoo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/andrefoo/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/MagnificentCreature/ip.git (master)... +Sep 26, 2023 2:08:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/MagnificentCreature/ip.git (master)... +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/MagnificentCreature/ip.git (master) completed! +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator analyzeRepos +INFO: [390/478] Analyzing https://github.com/tohpinren/ip.git (master)... +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tohpinren/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tohpinren/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/andrefoo/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tohpinren/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/andrefoo/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/andrefoo/ip.git (master) completed! -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator analyzeRepos INFO: [391/478] Analyzing https://github.com/XihuaZ/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tohpinren/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tohpinren/ip.git (master) completed! -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:44 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/XihuaZ/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/XihuaZ/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tohpinren/ip.git (master)... +Sep 26, 2023 2:08:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tohpinren/ip.git (master)... +Sep 26, 2023 2:08:45 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tohpinren/ip.git (master) completed! +Sep 26, 2023 2:08:45 PM reposense.report.ReportGenerator analyzeRepos INFO: [392/478] Analyzing https://github.com/xavierpok/ip.git (master)... -Sep 26, 2023 4:04:55 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xavierpok/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xavierpok/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/XihuaZ/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/XihuaZ/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/XihuaZ/ip.git (master) completed! -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:45 PM reposense.report.ReportGenerator analyzeRepos INFO: [393/478] Analyzing https://github.com/SungMatt/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xavierpok/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SungMatt/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SungMatt/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xavierpok/ip.git (master)... +Sep 26, 2023 2:08:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xavierpok/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:45 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xavierpok/ip.git (master) completed! -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:45 PM reposense.report.ReportGenerator analyzeRepos INFO: [394/478] Analyzing https://github.com/bkjwjason/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:45 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bkjwjason/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bkjwjason/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bkjwjason/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bkjwjason/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bkjwjason/ip.git (master) completed! -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator analyzeRepos INFO: [395/478] Analyzing https://github.com/Choonyan02/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Choonyan02/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Choonyan02/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Choonyan02/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SungMatt/ip.git (master)... +Sep 26, 2023 2:08:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Choonyan02/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Choonyan02/ip.git (master) completed! -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator analyzeRepos INFO: [396/478] Analyzing https://github.com/aarontxz/ip.git (master)... -Sep 26, 2023 4:04:56 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/aarontxz/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/aarontxz/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/aarontxz/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aarontxz/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aarontxz/ip.git (master) completed! -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SungMatt/ip.git (master)... +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SungMatt/ip.git (master) completed! +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator analyzeRepos INFO: [397/478] Analyzing https://github.com/jianyangg/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jianyangg/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jianyangg/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SungMatt/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/aarontxz/ip.git (master)... +Sep 26, 2023 2:08:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aarontxz/ip.git (master)... +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aarontxz/ip.git (master) completed! +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator analyzeRepos +INFO: [398/478] Analyzing https://github.com/tayian/ip.git (master)... +Sep 26, 2023 2:08:46 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tayian/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tayian/ip.git (master)... +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jianyangg/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jianyangg/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SungMatt/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jianyangg/ip.git (master) completed! -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [398/478] Analyzing https://github.com/tayian/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SungMatt/ip.git (master) completed! -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [399/478] Analyzing https://github.com/wnchan/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tayian/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tayian/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wnchan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wnchan/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tayian/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wnchan/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tayian/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wnchan/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tayian/ip.git (master) completed! -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [400/478] Analyzing https://github.com/cyaoxuan/ip.git (master)... +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cyaoxuan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cyaoxuan/ip.git (master)... +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wnchan/ip.git (master)... +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wnchan/ip.git (master)... +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wnchan/ip.git (master) completed! -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [400/478] Analyzing https://github.com/anthonytamzil/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [401/478] Analyzing https://github.com/cyaoxuan/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [401/478] Analyzing https://github.com/anthonytamzil/ip.git (master)... +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/anthonytamzil/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/anthonytamzil/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cyaoxuan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cyaoxuan/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cyaoxuan/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cyaoxuan/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cyaoxuan/ip.git (master) completed! -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [402/478] Analyzing https://github.com/CelestineTan03/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/CelestineTan03/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/CelestineTan03/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator analyzeRepos +INFO: [402/478] Analyzing https://github.com/saltedfishxx/ip.git (master)... +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/saltedfishxx/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/saltedfishxx/ip.git (master)... +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/anthonytamzil/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/anthonytamzil/ip.git (master)... -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/anthonytamzil/ip.git (master) completed! -Sep 26, 2023 4:04:57 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:47 PM reposense.report.ReportGenerator analyzeRepos INFO: [403/478] Analyzing https://github.com/Jweewee/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/saltedfishxx/ip.git (master)... +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jweewee/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jweewee/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/saltedfishxx/ip.git (master)... +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/saltedfishxx/ip.git (master) completed! +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [404/478] Analyzing https://github.com/CelestineTan03/ip.git (master)... +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/CelestineTan03/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/CelestineTan03/ip.git (master)... +Sep 26, 2023 2:08:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/CelestineTan03/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/CelestineTan03/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/CelestineTan03/ip.git (master) completed! -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [404/478] Analyzing https://github.com/AlagappanRa/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [405/478] Analyzing https://github.com/AlagappanRa/ip.git (master)... +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AlagappanRa/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AlagappanRa/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AlagappanRa/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AlagappanRa/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AlagappanRa/ip.git (master) completed! -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [405/478] Analyzing https://github.com/saltedfishxx/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/saltedfishxx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/saltedfishxx/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Jweewee/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jweewee/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jweewee/ip.git (master) completed! -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator analyzeRepos INFO: [406/478] Analyzing https://github.com/Ken-Lai/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ken-Lai/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ken-Lai/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/saltedfishxx/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/saltedfishxx/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/saltedfishxx/ip.git (master) completed! -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator analyzeRepos -INFO: [407/478] Analyzing https://github.com/euchangxian/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/euchangxian/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/euchangxian/ip.git (master)... -Sep 26, 2023 4:04:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ken-Lai/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ken-Lai/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ken-Lai/ip.git (master) completed! -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [408/478] Analyzing https://github.com/itssisi/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AlagappanRa/ip.git (master)... +Sep 26, 2023 2:08:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AlagappanRa/ip.git (master)... +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AlagappanRa/ip.git (master) completed! +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator analyzeRepos +INFO: [407/478] Analyzing https://github.com/itssisi/ip.git (master)... +Sep 26, 2023 2:08:48 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/itssisi/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/itssisi/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/itssisi/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/itssisi/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/itssisi/ip.git (master) completed! -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:49 PM reposense.report.ReportGenerator analyzeRepos +INFO: [408/478] Analyzing https://github.com/euchangxian/ip.git (master)... +Sep 26, 2023 2:08:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ken-Lai/ip.git (master)... +Sep 26, 2023 2:08:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ken-Lai/ip.git (master)... +Sep 26, 2023 2:08:49 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ken-Lai/ip.git (master) completed! +Sep 26, 2023 2:08:49 PM reposense.report.ReportGenerator analyzeRepos INFO: [409/478] Analyzing https://github.com/jamz903/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:49 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/euchangxian/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/euchangxian/ip.git (master)... +Sep 26, 2023 2:08:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jamz903/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jamz903/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/euchangxian/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jamz903/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jamz903/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:49 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jamz903/ip.git (master) completed! -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/euchangxian/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:49 PM reposense.report.ReportGenerator analyzeRepos INFO: [410/478] Analyzing https://github.com/Kevin-Liusx/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/euchangxian/ip.git (master) completed! -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [411/478] Analyzing https://github.com/Propene-Dan/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:49 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kevin-Liusx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kevin-Liusx/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Propene-Dan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Propene-Dan/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/euchangxian/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kevin-Liusx/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Propene-Dan/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kevin-Liusx/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kevin-Liusx/ip.git (master) completed! -Sep 26, 2023 4:04:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Propene-Dan/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [411/478] Analyzing https://github.com/Propene-Dan/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Propene-Dan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Propene-Dan/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/euchangxian/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/euchangxian/ip.git (master) completed! +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator analyzeRepos INFO: [412/478] Analyzing https://github.com/ChuanXinNg/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Propene-Dan/ip.git (master) completed! -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [413/478] Analyzing https://github.com/kenvynKwek/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChuanXinNg/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChuanXinNg/ip.git (master)... -Sep 26, 2023 4:04:59 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Propene-Dan/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Propene-Dan/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Propene-Dan/ip.git (master) completed! +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [413/478] Analyzing https://github.com/kenvynKwek/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kenvynKwek/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:04:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kenvynKwek/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kenvynKwek/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kenvynKwek/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kenvynKwek/ip.git (master) completed! -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [414/478] Analyzing https://github.com/prawnzyy/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/prawnzyy/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/prawnzyy/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChuanXinNg/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChuanXinNg/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChuanXinNg/ip.git (master) completed! -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator analyzeRepos +INFO: [414/478] Analyzing https://github.com/prawnzyy/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/prawnzyy/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/prawnzyy/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kenvynKwek/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kenvynKwek/ip.git (master)... +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kenvynKwek/ip.git (master) completed! +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator analyzeRepos INFO: [415/478] Analyzing https://github.com/Ruizhi2001/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:50 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ruizhi2001/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ruizhi2001/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/prawnzyy/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/prawnzyy/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/prawnzyy/ip.git (master) completed! -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ruizhi2001/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator analyzeRepos INFO: [416/478] Analyzing https://github.com/saraozn/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/saraozn/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/saraozn/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ruizhi2001/ip.git (master)... +Sep 26, 2023 2:08:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Ruizhi2001/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Ruizhi2001/ip.git (master) completed! -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator analyzeRepos INFO: [417/478] Analyzing https://github.com/nicholastng010601/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicholastng010601/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicholastng010601/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/saraozn/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/saraozn/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/saraozn/ip.git (master) completed! -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [418/478] Analyzing https://github.com/yezkez10/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yezkez10/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yezkez10/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [418/478] Analyzing https://github.com/DistractedCat/ip.git (master)... +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DistractedCat/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DistractedCat/ip.git (master)... +Sep 26, 2023 2:08:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nicholastng010601/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nicholastng010601/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nicholastng010601/ip.git (master) completed! -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [419/478] Analyzing https://github.com/DistractedCat/ip.git (master)... -Sep 26, 2023 4:05:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DistractedCat/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DistractedCat/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yezkez10/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yezkez10/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yezkez10/ip.git (master) completed! -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [420/478] Analyzing https://github.com/revdrag/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/revdrag/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/revdrag/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [419/478] Analyzing https://github.com/yezkez10/ip.git (master)... +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yezkez10/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yezkez10/ip.git (master)... +Sep 26, 2023 2:08:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DistractedCat/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DistractedCat/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DistractedCat/ip.git (master) completed! -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator analyzeRepos +INFO: [420/478] Analyzing https://github.com/revdrag/ip.git (master)... +Sep 26, 2023 2:08:51 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/revdrag/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/revdrag/ip.git (master)... +Sep 26, 2023 2:08:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yezkez10/ip.git (master)... +Sep 26, 2023 2:08:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yezkez10/ip.git (master)... +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yezkez10/ip.git (master) completed! +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator analyzeRepos INFO: [421/478] Analyzing https://github.com/alvinlim277/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alvinlim277/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alvinlim277/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/revdrag/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/revdrag/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/revdrag/ip.git (master) completed! -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator analyzeRepos INFO: [422/478] Analyzing https://github.com/JasonRay168/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JasonRay168/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JasonRay168/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alvinlim277/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alvinlim277/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alvinlim277/ip.git (master) completed! -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator analyzeRepos INFO: [423/478] Analyzing https://github.com/billieboy7/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/billieboy7/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/billieboy7/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JasonRay168/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JasonRay168/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JasonRay168/ip.git (master) completed! -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator analyzeRepos INFO: [424/478] Analyzing https://github.com/jannnice/ip.git (master)... -Sep 26, 2023 4:05:01 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:52 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jannnice/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jannnice/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/billieboy7/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/billieboy7/ip.git (master)... +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/billieboy7/ip.git (master) completed! +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [425/478] Analyzing https://github.com/evanyan13/ip.git (master)... +Sep 26, 2023 2:08:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jannnice/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jannnice/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/billieboy7/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jannnice/ip.git (master) completed! -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [425/478] Analyzing https://github.com/samuelim01/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/billieboy7/ip.git (master) completed! -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [426/478] Analyzing https://github.com/dinde2004/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/samuelim01/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/samuelim01/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dinde2004/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dinde2004/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/evanyan13/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/evanyan13/ip.git (master)... +Sep 26, 2023 2:08:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dinde2004/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dinde2004/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dinde2004/ip.git (master) completed! -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [427/478] Analyzing https://github.com/evanyan13/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/evanyan13/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/evanyan13/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/samuelim01/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/samuelim01/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/samuelim01/ip.git (master) completed! -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator analyzeRepos +INFO: [427/478] Analyzing https://github.com/samuelim01/ip.git (master)... +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/samuelim01/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/samuelim01/ip.git (master)... +Sep 26, 2023 2:08:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/evanyan13/ip.git (master)... +Sep 26, 2023 2:08:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/evanyan13/ip.git (master)... +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/evanyan13/ip.git (master) completed! +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator analyzeRepos INFO: [428/478] Analyzing https://github.com/seanpzk/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/samuelim01/ip.git (master)... +Sep 26, 2023 2:08:53 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/seanpzk/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/seanpzk/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/seanpzk/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/seanpzk/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/seanpzk/ip.git (master) completed! -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/samuelim01/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/samuelim01/ip.git (master) completed! +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator analyzeRepos INFO: [429/478] Analyzing https://github.com/lsyurea/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lsyurea/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lsyurea/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/evanyan13/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/evanyan13/ip.git (master)... -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/evanyan13/ip.git (master) completed! -Sep 26, 2023 4:05:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [430/478] Analyzing https://github.com/Sasmik23/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Sasmik23/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Sasmik23/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/seanpzk/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lsyurea/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/seanpzk/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/seanpzk/ip.git (master) completed! +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [430/478] Analyzing https://github.com/geraldngjx/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lsyurea/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lsyurea/ip.git (master) completed! -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [431/478] Analyzing https://github.com/KumChaiYin/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/KumChaiYin/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/KumChaiYin/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Sasmik23/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Sasmik23/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Sasmik23/ip.git (master) completed! -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [432/478] Analyzing https://github.com/geraldngjx/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [431/478] Analyzing https://github.com/Sasmik23/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/geraldngjx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/geraldngjx/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KumChaiYin/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KumChaiYin/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KumChaiYin/ip.git (master) completed! -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [433/478] Analyzing https://github.com/garylow2001/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/garylow2001/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/garylow2001/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Sasmik23/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Sasmik23/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/geraldngjx/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/geraldngjx/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/geraldngjx/ip.git (master) completed! -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [434/478] Analyzing https://github.com/leontan2/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [432/478] Analyzing https://github.com/garylow2001/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/garylow2001/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/garylow2001/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Sasmik23/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Sasmik23/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Sasmik23/ip.git (master) completed! +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator analyzeRepos +INFO: [433/478] Analyzing https://github.com/leontan2/ip.git (master)... +Sep 26, 2023 2:08:54 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/leontan2/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/leontan2/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/garylow2001/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/garylow2001/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/garylow2001/ip.git (master) completed! -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepos -INFO: [435/478] Analyzing https://github.com/wamps-jp/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wamps-jp/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wamps-jp/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [434/478] Analyzing https://github.com/KumChaiYin/ip.git (master)... +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/KumChaiYin/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/KumChaiYin/ip.git (master)... +Sep 26, 2023 2:08:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/leontan2/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/leontan2/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/leontan2/ip.git (master) completed! -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator analyzeRepos +INFO: [435/478] Analyzing https://github.com/wamps-jp/ip.git (master)... +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wamps-jp/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wamps-jp/ip.git (master)... +Sep 26, 2023 2:08:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KumChaiYin/ip.git (master)... +Sep 26, 2023 2:08:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KumChaiYin/ip.git (master)... +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KumChaiYin/ip.git (master) completed! +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator analyzeRepos INFO: [436/478] Analyzing https://github.com/dickongwd/ip.git (master)... -Sep 26, 2023 4:05:03 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dickongwd/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dickongwd/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wamps-jp/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wamps-jp/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wamps-jp/ip.git (master) completed! -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator analyzeRepos INFO: [437/478] Analyzing https://github.com/jacksonyuan256/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:55 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jacksonyuan256/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jacksonyuan256/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dickongwd/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dickongwd/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dickongwd/ip.git (master) completed! -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [438/478] Analyzing https://github.com/Nauxe/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Nauxe/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Nauxe/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jacksonyuan256/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jacksonyuan256/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jacksonyuan256/ip.git (master) completed! -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [439/478] Analyzing https://github.com/wr1159/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [438/478] Analyzing https://github.com/wr1159/ip.git (master)... +Sep 26, 2023 2:08:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dickongwd/ip.git (master)... +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wr1159/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wr1159/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Nauxe/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Nauxe/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Nauxe/ip.git (master) completed! -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [440/478] Analyzing https://github.com/suryanshkushwaha/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/suryanshkushwaha/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/suryanshkushwaha/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dickongwd/ip.git (master)... +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dickongwd/ip.git (master) completed! +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [439/478] Analyzing https://github.com/Nauxe/ip.git (master)... +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Nauxe/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Nauxe/ip.git (master)... +Sep 26, 2023 2:08:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wr1159/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wr1159/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wr1159/ip.git (master) completed! -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [441/478] Analyzing https://github.com/yyyaohhh/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yyyaohhh/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yyyaohhh/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yyyaohhh/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yyyaohhh/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yyyaohhh/ip.git (master) completed! -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [440/478] Analyzing https://github.com/suryanshkushwaha/ip.git (master)... +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/suryanshkushwaha/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/suryanshkushwaha/ip.git (master)... +Sep 26, 2023 2:08:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Nauxe/ip.git (master)... +Sep 26, 2023 2:08:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Nauxe/ip.git (master)... +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Nauxe/ip.git (master) completed! +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [441/478] Analyzing https://github.com/lululwtv/ip.git (master)... +Sep 26, 2023 2:08:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/suryanshkushwaha/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [442/478] Analyzing https://github.com/czhiruo/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/czhiruo/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/czhiruo/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/suryanshkushwaha/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/suryanshkushwaha/ip.git (master) completed! -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [443/478] Analyzing https://github.com/zhanyang01/ip.git (master)... -Sep 26, 2023 4:05:04 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:56 PM reposense.report.ReportGenerator analyzeRepos +INFO: [442/478] Analyzing https://github.com/zhanyang01/ip.git (master)... +Sep 26, 2023 2:08:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhanyang01/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhanyang01/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/czhiruo/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/czhiruo/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/czhiruo/ip.git (master) completed! -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [444/478] Analyzing https://github.com/victorpengmx/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/victorpengmx/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/victorpengmx/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lululwtv/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lululwtv/ip.git (master)... +Sep 26, 2023 2:08:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zhanyang01/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zhanyang01/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:57 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zhanyang01/ip.git (master) completed! -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [445/478] Analyzing https://github.com/longnguyentan/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [443/478] Analyzing https://github.com/czhiruo/ip.git (master)... +Sep 26, 2023 2:08:57 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/czhiruo/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/czhiruo/ip.git (master)... +Sep 26, 2023 2:08:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/czhiruo/ip.git (master)... +Sep 26, 2023 2:08:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/czhiruo/ip.git (master)... +Sep 26, 2023 2:08:57 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/czhiruo/ip.git (master) completed! +Sep 26, 2023 2:08:57 PM reposense.report.ReportGenerator analyzeRepos +INFO: [444/478] Analyzing https://github.com/longnguyentan/ip.git (master)... +Sep 26, 2023 2:08:57 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/longnguyentan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/longnguyentan/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/longnguyentan/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/longnguyentan/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/longnguyentan/ip.git (master) completed! +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [445/478] Analyzing https://github.com/victorpengmx/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/victorpengmx/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/victorpengmx/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lululwtv/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lululwtv/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lululwtv/ip.git (master) completed! +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [446/478] Analyzing https://github.com/yyyaohhh/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yyyaohhh/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yyyaohhh/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/victorpengmx/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/victorpengmx/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/victorpengmx/ip.git (master) completed! -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [446/478] Analyzing https://github.com/Cikguseven/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [447/478] Analyzing https://github.com/Cikguseven/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cikguseven/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cikguseven/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/longnguyentan/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/longnguyentan/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/longnguyentan/ip.git (master) completed! -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [447/478] Analyzing https://github.com/Eola-Z/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yyyaohhh/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yyyaohhh/ip.git (master)... +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yyyaohhh/ip.git (master) completed! +Sep 26, 2023 2:08:58 PM reposense.report.ReportGenerator analyzeRepos +INFO: [448/478] Analyzing https://github.com/Eola-Z/ip.git (master)... +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Eola-Z/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Eola-Z/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cikguseven/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Cikguseven/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Cikguseven/ip.git (master) completed! -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [448/478] Analyzing https://github.com/jibtaf/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jibtaf/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jibtaf/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [449/478] Analyzing https://github.com/jibtaf/ip.git (master)... +Sep 26, 2023 2:08:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Eola-Z/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Eola-Z/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jibtaf/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:08:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jibtaf/ip.git (master)... +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Eola-Z/ip.git (master) completed! -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [449/478] Analyzing https://github.com/lipwei1808/ip.git (master)... -Sep 26, 2023 4:05:05 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [450/478] Analyzing https://github.com/lipwei1808/ip.git (master)... +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lipwei1808/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lipwei1808/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jibtaf/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:08:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lipwei1808/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jibtaf/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:08:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jibtaf/ip.git (master)... +Sep 26, 2023 2:08:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lipwei1808/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jibtaf/ip.git (master) completed! -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [450/478] Analyzing https://github.com/Mohammed-Faizzzz/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lipwei1808/ip.git (master) completed! -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [451/478] Analyzing https://github.com/dylkaw/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jibtaf/ip.git (master)... +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [451/478] Analyzing https://github.com/Mohammed-Faizzzz/ip.git (master)... +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jibtaf/ip.git (master) completed! +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator analyzeRepos +INFO: [452/478] Analyzing https://github.com/dylkaw/ip.git (master)... +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Mohammed-Faizzzz/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Mohammed-Faizzzz/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:08:59 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dylkaw/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:08:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dylkaw/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dylkaw/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dylkaw/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dylkaw/ip.git (master) completed! -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator analyzeRepos -INFO: [452/478] Analyzing https://github.com/lululwtv/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Mohammed-Faizzzz/ip.git (master) completed! -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator analyzeRepos INFO: [453/478] Analyzing https://github.com/nikele2001/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nikele2001/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nikele2001/ip.git (master)... -Sep 26, 2023 4:05:06 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lululwtv/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lululwtv/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nikele2001/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nikele2001/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nikele2001/ip.git (master) completed! -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:09:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... +Sep 26, 2023 2:09:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Mohammed-Faizzzz/ip.git (master) completed! +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator analyzeRepos INFO: [454/478] Analyzing https://github.com/DeltonCheng/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/DeltonCheng/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/DeltonCheng/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DeltonCheng/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nikele2001/ip.git (master)... +Sep 26, 2023 2:09:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DeltonCheng/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DeltonCheng/ip.git (master) completed! -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [455/478] Analyzing https://github.com/ChangruHenryQian/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nikele2001/ip.git (master)... +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [455/478] Analyzing https://github.com/craigtonlian/ip.git (master)... +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nikele2001/ip.git (master) completed! +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator analyzeRepos +INFO: [456/478] Analyzing https://github.com/ChangruHenryQian/ip.git (master)... +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/craigtonlian/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:09:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/craigtonlian/ip.git (master)... +Sep 26, 2023 2:09:00 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChangruHenryQian/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChangruHenryQian/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChangruHenryQian/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChangruHenryQian/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChangruHenryQian/ip.git (master) completed! -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [456/478] Analyzing https://github.com/craigtonlian/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/craigtonlian/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/craigtonlian/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [457/478] Analyzing https://github.com/ruo-x/ip.git (master)... +Sep 26, 2023 2:09:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/craigtonlian/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruo-x/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:09:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruo-x/ip.git (master)... +Sep 26, 2023 2:09:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/craigtonlian/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/craigtonlian/ip.git (master) completed! -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [457/478] Analyzing https://github.com/iantsaii/ip.git (master)... -Sep 26, 2023 4:05:07 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [458/478] Analyzing https://github.com/iantsaii/ip.git (master)... +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/iantsaii/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/iantsaii/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lululwtv/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lululwtv/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lululwtv/ip.git (master) completed! -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [458/478] Analyzing https://github.com/wjacobw/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wjacobw/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wjacobw/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/iantsaii/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/iantsaii/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/iantsaii/ip.git (master) completed! -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [459/478] Analyzing https://github.com/angkyakdifp/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [459/478] Analyzing https://github.com/wjacobw/ip.git (master)... +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wjacobw/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:09:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wjacobw/ip.git (master)... +Sep 26, 2023 2:09:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruo-x/ip.git (master)... +Sep 26, 2023 2:09:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruo-x/ip.git (master)... +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruo-x/ip.git (master) completed! +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator analyzeRepos +INFO: [460/478] Analyzing https://github.com/angkyakdifp/ip.git (master)... +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/angkyakdifp/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/angkyakdifp/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wjacobw/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wjacobw/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wjacobw/ip.git (master) completed! -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [460/478] Analyzing https://github.com/ruo-x/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruo-x/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruo-x/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/angkyakdifp/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/angkyakdifp/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/angkyakdifp/ip.git (master) completed! -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator analyzeRepos INFO: [461/478] Analyzing https://github.com/brein62/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:01 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/brein62/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/brein62/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruo-x/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruo-x/ip.git (master)... -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruo-x/ip.git (master) completed! -Sep 26, 2023 4:05:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [462/478] Analyzing https://github.com/kiatkat/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kiatkat/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kiatkat/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/angkyakdifp/ip.git (master)... +Sep 26, 2023 2:09:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/angkyakdifp/ip.git (master)... +Sep 26, 2023 2:09:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/angkyakdifp/ip.git (master) completed! +Sep 26, 2023 2:09:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [462/478] Analyzing https://github.com/nicrandomlee/ip.git (master)... +Sep 26, 2023 2:09:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nicrandomlee/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:09:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nicrandomlee/ip.git (master)... +Sep 26, 2023 2:09:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/brein62/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/brein62/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:02 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/brein62/ip.git (master) completed! -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:09:02 PM reposense.report.ReportGenerator analyzeRepos INFO: [463/478] Analyzing https://github.com/Bryan-Goh/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:02 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Bryan-Goh/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Bryan-Goh/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kiatkat/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kiatkat/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kiatkat/ip.git (master) completed! -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [464/478] Analyzing https://github.com/nicrandomlee/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nicrandomlee/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nicrandomlee/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicrandomlee/ip.git (master)... +Sep 26, 2023 2:09:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicrandomlee/ip.git (master)... +Sep 26, 2023 2:09:02 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicrandomlee/ip.git (master) completed! +Sep 26, 2023 2:09:02 PM reposense.report.ReportGenerator analyzeRepos +INFO: [464/478] Analyzing https://github.com/kiatkat/ip.git (master)... +Sep 26, 2023 2:09:02 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kiatkat/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:09:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kiatkat/ip.git (master)... +Sep 26, 2023 2:09:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Bryan-Goh/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Bryan-Goh/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Bryan-Goh/ip.git (master) completed! -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:09:03 PM reposense.report.ReportGenerator analyzeRepos INFO: [465/478] Analyzing https://github.com/MadLamprey/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/MadLamprey/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/MadLamprey/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kiatkat/ip.git (master)... +Sep 26, 2023 2:09:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kiatkat/ip.git (master)... +Sep 26, 2023 2:09:03 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kiatkat/ip.git (master) completed! +Sep 26, 2023 2:09:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [466/478] Analyzing https://github.com/xyT-T/ip.git (master)... +Sep 26, 2023 2:09:03 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xyT-T/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:09:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xyT-T/ip.git (master)... +Sep 26, 2023 2:09:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/MadLamprey/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicrandomlee/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/MadLamprey/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:03 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/MadLamprey/ip.git (master) completed! -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [466/478] Analyzing https://github.com/jiakai-17/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicrandomlee/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicrandomlee/ip.git (master) completed! -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:03 PM reposense.report.ReportGenerator analyzeRepos +INFO: [467/478] Analyzing https://github.com/jiakai-17/ip.git (master)... +Sep 26, 2023 2:09:03 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jiakai-17/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jiakai-17/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator analyzeRepos -INFO: [467/478] Analyzing https://github.com/nreHieW/ip.git (master)... -Sep 26, 2023 4:05:09 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xyT-T/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xyT-T/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xyT-T/ip.git (master) completed! +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [468/478] Analyzing https://github.com/nathanielcalimag/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nathanielcalimag/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:09:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nathanielcalimag/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jiakai-17/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jiakai-17/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jiakai-17/ip.git (master) completed! +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [469/478] Analyzing https://github.com/nreHieW/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nreHieW/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nreHieW/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nreHieW/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nathanielcalimag/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nreHieW/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nreHieW/ip.git (master) completed! -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [468/478] Analyzing https://github.com/xyT-T/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xyT-T/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xyT-T/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jiakai-17/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jiakai-17/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jiakai-17/ip.git (master) completed! -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [469/478] Analyzing https://github.com/nathanielcalimag/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nathanielcalimag/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nathanielcalimag/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xyT-T/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nathanielcalimag/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xyT-T/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xyT-T/ip.git (master) completed! -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [470/478] Analyzing https://github.com/Saezenn/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nathanielcalimag/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [470/478] Analyzing https://github.com/Saezenn/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nathanielcalimag/ip.git (master) completed! -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [471/478] Analyzing https://github.com/jellywaiyan/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Saezenn/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Saezenn/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jellywaiyan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jellywaiyan/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Saezenn/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Saezenn/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Saezenn/ip.git (master) completed! -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepos +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepos INFO: [472/478] Analyzing https://github.com/marquestye/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jellywaiyan/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/marquestye/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/marquestye/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jellywaiyan/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jellywaiyan/ip.git (master)... -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jellywaiyan/ip.git (master) completed! -Sep 26, 2023 4:05:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [473/478] Analyzing https://github.com/DonovanJJ/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DonovanJJ/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DonovanJJ/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator analyzeRepos +INFO: [473/478] Analyzing https://github.com/Tang-Moyan/ip.git (master)... +Sep 26, 2023 2:09:04 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Tang-Moyan/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:09:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Tang-Moyan/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Tang-Moyan/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/marquestye/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/DonovanJJ/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Tang-Moyan/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Tang-Moyan/ip.git (master) completed! +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [474/478] Analyzing https://github.com/DonovanJJ/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/marquestye/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/marquestye/ip.git (master) completed! -Sep 26, 2023 4:05:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [475/478] Analyzing https://github.com/Sebtey/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DonovanJJ/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:09:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DonovanJJ/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Sebtey/ip.git (master) does not contain a standalone config file. +Sep 26, 2023 2:09:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Sebtey/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/DonovanJJ/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DonovanJJ/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [474/478] Analyzing https://github.com/Tang-Moyan/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DonovanJJ/ip.git (master) completed! -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [475/478] Analyzing https://github.com/tyouwei/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Tang-Moyan/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Tang-Moyan/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [476/478] Analyzing https://github.com/tyouwei/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tyouwei/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tyouwei/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Tang-Moyan/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Tang-Moyan/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Tang-Moyan/ip.git (master) completed! -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [476/478] Analyzing https://github.com/rionshocker/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Sebtey/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Sebtey/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Sebtey/ip.git (master) completed! +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator analyzeRepos +INFO: [477/478] Analyzing https://github.com/rionshocker/ip.git (master)... +Sep 26, 2023 2:09:05 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rionshocker/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rionshocker/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tyouwei/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tyouwei/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tyouwei/ip.git (master) completed! -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [477/478] Analyzing https://github.com/Blizzeracz/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator updateRepoConfig +Sep 26, 2023 2:09:06 PM reposense.report.ReportGenerator analyzeRepos +INFO: [478/478] Analyzing https://github.com/Blizzeracz/ip.git (master)... +Sep 26, 2023 2:09:06 PM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Blizzeracz/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Sep 26, 2023 2:09:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Blizzeracz/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Blizzeracz/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Blizzeracz/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Blizzeracz/ip.git (master) completed! -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [478/478] Analyzing https://github.com/Sebtey/ip.git (master)... -Sep 26, 2023 4:05:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Sebtey/ip.git (master) does not contain a standalone config file. -Sep 26, 2023 4:05:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Sebtey/ip.git (master)... -Sep 26, 2023 4:05:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Sep 26, 2023 2:09:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/rionshocker/ip.git (master)... -Sep 26, 2023 4:05:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Sep 26, 2023 2:09:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/rionshocker/ip.git (master)... -Sep 26, 2023 4:05:12 AM reposense.report.ReportGenerator analyzeRepo +Sep 26, 2023 2:09:06 PM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/rionshocker/ip.git (master) completed! -Sep 26, 2023 4:05:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Sebtey/ip.git (master)... -Sep 26, 2023 4:05:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Sebtey/ip.git (master)... -Sep 26, 2023 4:05:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Sebtey/ip.git (master) completed! -Sep 26, 2023 4:05:12 AM reposense.report.ReportGenerator generateReposReport +Sep 26, 2023 2:09:06 PM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/ip-dashboard/ip-dashboard/reposense-report -Sep 26, 2023 4:05:14 AM reposense.RepoSense main -INFO: Elapsed processing time: 2 minute(s) 20.48 second(s) +Sep 26, 2023 2:09:09 PM reposense.RepoSense main +INFO: Elapsed processing time: 3 minute(s) 3.41 second(s) diff --git a/summary.json b/summary.json index 28d455eb..c0938c73 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"075d34d8f5","reportGeneratedTime":"Tue Sep 26 12:02:55 2023 UTC+08:00","reportGenerationTime":" 2 minute(s) 18.45 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 iP Code Dashboard","repos":[{"location":{"location":"https://github.com/remuslum/ip.git","repoName":"ip","organization":"remuslum","domainName":"github"},"branch":"master","displayName":"remuslum/ip[master]","outputFolderName":"remuslum_ip_master"},{"location":{"location":"https://github.com/elhy1999/ip.git","repoName":"ip","organization":"elhy1999","domainName":"github"},"branch":"master","displayName":"elhy1999/ip[master]","outputFolderName":"elhy1999_ip_master"},{"location":{"location":"https://github.com/XihuaZ/ip.git","repoName":"ip","organization":"XihuaZ","domainName":"github"},"branch":"master","displayName":"XihuaZ/ip[master]","outputFolderName":"XihuaZ_ip_master"},{"location":{"location":"https://github.com/bwangpj/ip.git","repoName":"ip","organization":"bwangpj","domainName":"github"},"branch":"master","displayName":"bwangpj/ip[master]","outputFolderName":"bwangpj_ip_master"},{"location":{"location":"https://github.com/shuenj/ip.git","repoName":"ip","organization":"shuenj","domainName":"github"},"branch":"master","displayName":"shuenj/ip[master]","outputFolderName":"shuenj_ip_master"},{"location":{"location":"https://github.com/SungMatt/ip.git","repoName":"ip","organization":"SungMatt","domainName":"github"},"branch":"master","displayName":"SungMatt/ip[master]","outputFolderName":"SungMatt_ip_master"},{"location":{"location":"https://github.com/junhonglow/ip.git","repoName":"ip","organization":"junhonglow","domainName":"github"},"branch":"master","displayName":"junhonglow/ip[master]","outputFolderName":"junhonglow_ip_master"},{"location":{"location":"https://github.com/xavierpok/ip.git","repoName":"ip","organization":"xavierpok","domainName":"github"},"branch":"master","displayName":"xavierpok/ip[master]","outputFolderName":"xavierpok_ip_master"},{"location":{"location":"https://github.com/marcellaantania/ip.git","repoName":"ip","organization":"marcellaantania","domainName":"github"},"branch":"master","displayName":"marcellaantania/ip[master]","outputFolderName":"marcellaantania_ip_master"},{"location":{"location":"https://github.com/starrylight99/ip.git","repoName":"ip","organization":"starrylight99","domainName":"github"},"branch":"master","displayName":"starrylight99/ip[master]","outputFolderName":"starrylight99_ip_master"},{"location":{"location":"https://github.com/leezhanpeng/ip.git","repoName":"ip","organization":"leezhanpeng","domainName":"github"},"branch":"master","displayName":"leezhanpeng/ip[master]","outputFolderName":"leezhanpeng_ip_master"},{"location":{"location":"https://github.com/sheryew/ip.git","repoName":"ip","organization":"sheryew","domainName":"github"},"branch":"master","displayName":"sheryew/ip[master]","outputFolderName":"sheryew_ip_master"},{"location":{"location":"https://github.com/lihongguang00/ip.git","repoName":"ip","organization":"lihongguang00","domainName":"github"},"branch":"master","displayName":"lihongguang00/ip[master]","outputFolderName":"lihongguang00_ip_master"},{"location":{"location":"https://github.com/nicrandomlee/ip.git","repoName":"ip","organization":"nicrandomlee","domainName":"github"},"branch":"master","displayName":"nicrandomlee/ip[master]","outputFolderName":"nicrandomlee_ip_master"},{"location":{"location":"https://github.com/LuahJunYang/ip.git","repoName":"ip","organization":"LuahJunYang","domainName":"github"},"branch":"master","displayName":"LuahJunYang/ip[master]","outputFolderName":"LuahJunYang_ip_master"},{"location":{"location":"https://github.com/s-peiran/ip.git","repoName":"ip","organization":"s-peiran","domainName":"github"},"branch":"master","displayName":"s-peiran/ip[master]","outputFolderName":"s-peiran_ip_master"},{"location":{"location":"https://github.com/aarontxz/ip.git","repoName":"ip","organization":"aarontxz","domainName":"github"},"branch":"master","displayName":"aarontxz/ip[master]","outputFolderName":"aarontxz_ip_master"},{"location":{"location":"https://github.com/chiayunrong/ip.git","repoName":"ip","organization":"chiayunrong","domainName":"github"},"branch":"master","displayName":"chiayunrong/ip[master]","outputFolderName":"chiayunrong_ip_master"},{"location":{"location":"https://github.com/nixonwidjaja/ip.git","repoName":"ip","organization":"nixonwidjaja","domainName":"github"},"branch":"master","displayName":"nixonwidjaja/ip[master]","outputFolderName":"nixonwidjaja_ip_master"},{"location":{"location":"https://github.com/imkwokyong/ip.git","repoName":"ip","organization":"imkwokyong","domainName":"github"},"branch":"master","displayName":"imkwokyong/ip[master]","outputFolderName":"imkwokyong_ip_master"},{"location":{"location":"https://github.com/mamayuan/ip.git","repoName":"ip","organization":"mamayuan","domainName":"github"},"branch":"master","displayName":"mamayuan/ip[master]","outputFolderName":"mamayuan_ip_master"},{"location":{"location":"https://github.com/geoffong11/ip.git","repoName":"ip","organization":"geoffong11","domainName":"github"},"branch":"master","displayName":"geoffong11/ip[master]","outputFolderName":"geoffong11_ip_master"},{"location":{"location":"https://github.com/vivienherq/ip.git","repoName":"ip","organization":"vivienherq","domainName":"github"},"branch":"master","displayName":"vivienherq/ip[master]","outputFolderName":"vivienherq_ip_master"},{"location":{"location":"https://github.com/johnnythesnake12/ip.git","repoName":"ip","organization":"johnnythesnake12","domainName":"github"},"branch":"master","displayName":"johnnythesnake12/ip[master]","outputFolderName":"johnnythesnake12_ip_master"},{"location":{"location":"https://github.com/Cloud7050/ip.git","repoName":"ip","organization":"Cloud7050","domainName":"github"},"branch":"master","displayName":"Cloud7050/ip[master]","outputFolderName":"Cloud7050_ip_master"},{"location":{"location":"https://github.com/jonyeokj/ip.git","repoName":"ip","organization":"jonyeokj","domainName":"github"},"branch":"master","displayName":"jonyeokj/ip[master]","outputFolderName":"jonyeokj_ip_master"},{"location":{"location":"https://github.com/lipwei1808/ip.git","repoName":"ip","organization":"lipwei1808","domainName":"github"},"branch":"master","displayName":"lipwei1808/ip[master]","outputFolderName":"lipwei1808_ip_master"},{"location":{"location":"https://github.com/zhanyang01/ip.git","repoName":"ip","organization":"zhanyang01","domainName":"github"},"branch":"master","displayName":"zhanyang01/ip[master]","outputFolderName":"zhanyang01_ip_master"},{"location":{"location":"https://github.com/EricXiong420/ip.git","repoName":"ip","organization":"EricXiong420","domainName":"github"},"branch":"master","displayName":"EricXiong420/ip[master]","outputFolderName":"EricXiong420_ip_master"},{"location":{"location":"https://github.com/sp4ce-cowboy/ip.git","repoName":"ip","organization":"sp4ce-cowboy","domainName":"github"},"branch":"master","displayName":"sp4ce-cowboy/ip[master]","outputFolderName":"sp4ce-cowboy_ip_master"},{"location":{"location":"https://github.com/ktzy0305/ip.git","repoName":"ip","organization":"ktzy0305","domainName":"github"},"branch":"master","displayName":"ktzy0305/ip[master]","outputFolderName":"ktzy0305_ip_master"},{"location":{"location":"https://github.com/dom-buri/ip.git","repoName":"ip","organization":"dom-buri","domainName":"github"},"branch":"master","displayName":"dom-buri/ip[master]","outputFolderName":"dom-buri_ip_master"},{"location":{"location":"https://github.com/rayshawntan/ip.git","repoName":"ip","organization":"rayshawntan","domainName":"github"},"branch":"master","displayName":"rayshawntan/ip[master]","outputFolderName":"rayshawntan_ip_master"},{"location":{"location":"https://github.com/Seonlo99/ip.git","repoName":"ip","organization":"Seonlo99","domainName":"github"},"branch":"master","displayName":"Seonlo99/ip[master]","outputFolderName":"Seonlo99_ip_master"},{"location":{"location":"https://github.com/woojiahao/ip.git","repoName":"ip","organization":"woojiahao","domainName":"github"},"branch":"master","displayName":"woojiahao/ip[master]","outputFolderName":"woojiahao_ip_master"},{"location":{"location":"https://github.com/Angelyxx/ip.git","repoName":"ip","organization":"Angelyxx","domainName":"github"},"branch":"master","displayName":"Angelyxx/ip[master]","outputFolderName":"Angelyxx_ip_master"},{"location":{"location":"https://github.com/jamz903/ip.git","repoName":"ip","organization":"jamz903","domainName":"github"},"branch":"master","displayName":"jamz903/ip[master]","outputFolderName":"jamz903_ip_master"},{"location":{"location":"https://github.com/Fallman2/ip.git","repoName":"ip","organization":"Fallman2","domainName":"github"},"branch":"master","displayName":"Fallman2/ip[master]","outputFolderName":"Fallman2_ip_master"},{"location":{"location":"https://github.com/jacobcuison/ip.git","repoName":"ip","organization":"jacobcuison","domainName":"github"},"branch":"master","displayName":"jacobcuison/ip[master]","outputFolderName":"jacobcuison_ip_master"},{"location":{"location":"https://github.com/kenvynKwek/ip.git","repoName":"ip","organization":"kenvynKwek","domainName":"github"},"branch":"master","displayName":"kenvynKwek/ip[master]","outputFolderName":"kenvynKwek_ip_master"},{"location":{"location":"https://github.com/kokrui/ip.git","repoName":"ip","organization":"kokrui","domainName":"github"},"branch":"master","displayName":"kokrui/ip[master]","outputFolderName":"kokrui_ip_master"},{"location":{"location":"https://github.com/ncmathan/ip.git","repoName":"ip","organization":"ncmathan","domainName":"github"},"branch":"master","displayName":"ncmathan/ip[master]","outputFolderName":"ncmathan_ip_master"},{"location":{"location":"https://github.com/xCOLOURx/ip.git","repoName":"ip","organization":"xCOLOURx","domainName":"github"},"branch":"master","displayName":"xCOLOURx/ip[master]","outputFolderName":"xCOLOURx_ip_master"},{"location":{"location":"https://github.com/zhyuhan/ip.git","repoName":"ip","organization":"zhyuhan","domainName":"github"},"branch":"master","displayName":"zhyuhan/ip[master]","outputFolderName":"zhyuhan_ip_master"},{"location":{"location":"https://github.com/chuababyy/ip.git","repoName":"ip","organization":"chuababyy","domainName":"github"},"branch":"master","displayName":"chuababyy/ip[master]","outputFolderName":"chuababyy_ip_master"},{"location":{"location":"https://github.com/rocketninja7/ip.git","repoName":"ip","organization":"rocketninja7","domainName":"github"},"branch":"master","displayName":"rocketninja7/ip[master]","outputFolderName":"rocketninja7_ip_master"},{"location":{"location":"https://github.com/marquestye/ip.git","repoName":"ip","organization":"marquestye","domainName":"github"},"branch":"master","displayName":"marquestye/ip[master]","outputFolderName":"marquestye_ip_master"},{"location":{"location":"https://github.com/ruiyangzh/ip.git","repoName":"ip","organization":"ruiyangzh","domainName":"github"},"branch":"master","displayName":"ruiyangzh/ip[master]","outputFolderName":"ruiyangzh_ip_master"},{"location":{"location":"https://github.com/derekjxtan/ip.git","repoName":"ip","organization":"derekjxtan","domainName":"github"},"branch":"master","displayName":"derekjxtan/ip[master]","outputFolderName":"derekjxtan_ip_master"},{"location":{"location":"https://github.com/mounilsankar/ip.git","repoName":"ip","organization":"mounilsankar","domainName":"github"},"branch":"master","displayName":"mounilsankar/ip[master]","outputFolderName":"mounilsankar_ip_master"},{"location":{"location":"https://github.com/wj331/ip.git","repoName":"ip","organization":"wj331","domainName":"github"},"branch":"master","displayName":"wj331/ip[master]","outputFolderName":"wj331_ip_master"},{"location":{"location":"https://github.com/JasonLCY-Temp/ip.git","repoName":"ip","organization":"JasonLCY-Temp","domainName":"github"},"branch":"master","displayName":"JasonLCY-Temp/ip[master]","outputFolderName":"JasonLCY-Temp_ip_master"},{"location":{"location":"https://github.com/lawruixi/ip.git","repoName":"ip","organization":"lawruixi","domainName":"github"},"branch":"master","displayName":"lawruixi/ip[master]","outputFolderName":"lawruixi_ip_master"},{"location":{"location":"https://github.com/wxwern/ip.git","repoName":"ip","organization":"wxwern","domainName":"github"},"branch":"master","displayName":"wxwern/ip[master]","outputFolderName":"wxwern_ip_master"},{"location":{"location":"https://github.com/zekone/ip.git","repoName":"ip","organization":"zekone","domainName":"github"},"branch":"master","displayName":"zekone/ip[master]","outputFolderName":"zekone_ip_master"},{"location":{"location":"https://github.com/wamps-jp/ip.git","repoName":"ip","organization":"wamps-jp","domainName":"github"},"branch":"master","displayName":"wamps-jp/ip[master]","outputFolderName":"wamps-jp_ip_master"},{"location":{"location":"https://github.com/saltedfishxx/ip.git","repoName":"ip","organization":"saltedfishxx","domainName":"github"},"branch":"master","displayName":"saltedfishxx/ip[master]","outputFolderName":"saltedfishxx_ip_master"},{"location":{"location":"https://github.com/winson8222/ip.git","repoName":"ip","organization":"winson8222","domainName":"github"},"branch":"master","displayName":"winson8222/ip[master]","outputFolderName":"winson8222_ip_master"},{"location":{"location":"https://github.com/brandon-nam/ip.git","repoName":"ip","organization":"brandon-nam","domainName":"github"},"branch":"master","displayName":"brandon-nam/ip[master]","outputFolderName":"brandon-nam_ip_master"},{"location":{"location":"https://github.com/p-xp/ip.git","repoName":"ip","organization":"p-xp","domainName":"github"},"branch":"master","displayName":"p-xp/ip[master]","outputFolderName":"p-xp_ip_master"},{"location":{"location":"https://github.com/WeeMingQing/ip.git","repoName":"ip","organization":"WeeMingQing","domainName":"github"},"branch":"master","displayName":"WeeMingQing/ip[master]","outputFolderName":"WeeMingQing_ip_master"},{"location":{"location":"https://github.com/ScarletBlanks/ip.git","repoName":"ip","organization":"ScarletBlanks","domainName":"github"},"branch":"master","displayName":"ScarletBlanks/ip[master]","outputFolderName":"ScarletBlanks_ip_master"},{"location":{"location":"https://github.com/seraphimstreets/ip.git","repoName":"ip","organization":"seraphimstreets","domainName":"github"},"branch":"master","displayName":"seraphimstreets/ip[master]","outputFolderName":"seraphimstreets_ip_master"},{"location":{"location":"https://github.com/devanshubisht/ip.git","repoName":"ip","organization":"devanshubisht","domainName":"github"},"branch":"master","displayName":"devanshubisht/ip[master]","outputFolderName":"devanshubisht_ip_master"},{"location":{"location":"https://github.com/Zjinnnn/ip.git","repoName":"ip","organization":"Zjinnnn","domainName":"github"},"branch":"master","displayName":"Zjinnnn/ip[master]","outputFolderName":"Zjinnnn_ip_master"},{"location":{"location":"https://github.com/brendanneojw/ip.git","repoName":"ip","organization":"brendanneojw","domainName":"github"},"branch":"master","displayName":"brendanneojw/ip[master]","outputFolderName":"brendanneojw_ip_master"},{"location":{"location":"https://github.com/aexolate/ip.git","repoName":"ip","organization":"aexolate","domainName":"github"},"branch":"master","displayName":"aexolate/ip[master]","outputFolderName":"aexolate_ip_master"},{"location":{"location":"https://github.com/techjay-c/ip.git","repoName":"ip","organization":"techjay-c","domainName":"github"},"branch":"master","displayName":"techjay-c/ip[master]","outputFolderName":"techjay-c_ip_master"},{"location":{"location":"https://github.com/SynapseProgramming/ip.git","repoName":"ip","organization":"SynapseProgramming","domainName":"github"},"branch":"master","displayName":"SynapseProgramming/ip[master]","outputFolderName":"SynapseProgramming_ip_master"},{"location":{"location":"https://github.com/TyrusLye/ip.git","repoName":"ip","organization":"TyrusLye","domainName":"github"},"branch":"master","displayName":"TyrusLye/ip[master]","outputFolderName":"TyrusLye_ip_master"},{"location":{"location":"https://github.com/RB9823/ip.git","repoName":"ip","organization":"RB9823","domainName":"github"},"branch":"master","displayName":"RB9823/ip[master]","outputFolderName":"RB9823_ip_master"},{"location":{"location":"https://github.com/jean-cq/ip.git","repoName":"ip","organization":"jean-cq","domainName":"github"},"branch":"master","displayName":"jean-cq/ip[master]","outputFolderName":"jean-cq_ip_master"},{"location":{"location":"https://github.com/Bearypop/ip.git","repoName":"ip","organization":"Bearypop","domainName":"github"},"branch":"master","displayName":"Bearypop/ip[master]","outputFolderName":"Bearypop_ip_master"},{"location":{"location":"https://github.com/andytoh1/ip.git","repoName":"ip","organization":"andytoh1","domainName":"github"},"branch":"master","displayName":"andytoh1/ip[master]","outputFolderName":"andytoh1_ip_master"},{"location":{"location":"https://github.com/siqirua/ip.git","repoName":"ip","organization":"siqirua","domainName":"github"},"branch":"master","displayName":"siqirua/ip[master]","outputFolderName":"siqirua_ip_master"},{"location":{"location":"https://github.com/amosting/ip.git","repoName":"ip","organization":"amosting","domainName":"github"},"branch":"master","displayName":"amosting/ip[master]","outputFolderName":"amosting_ip_master"},{"location":{"location":"https://github.com/JizhuoChen/ip.git","repoName":"ip","organization":"JizhuoChen","domainName":"github"},"branch":"master","displayName":"JizhuoChen/ip[master]","outputFolderName":"JizhuoChen_ip_master"},{"location":{"location":"https://github.com/Tang-Moyan/ip.git","repoName":"ip","organization":"Tang-Moyan","domainName":"github"},"branch":"master","displayName":"Tang-Moyan/ip[master]","outputFolderName":"Tang-Moyan_ip_master"},{"location":{"location":"https://github.com/aliciamichellew/ip.git","repoName":"ip","organization":"aliciamichellew","domainName":"github"},"branch":"master","displayName":"aliciamichellew/ip[master]","outputFolderName":"aliciamichellew_ip_master"},{"location":{"location":"https://github.com/KamiliArsyad/ip.git","repoName":"ip","organization":"KamiliArsyad","domainName":"github"},"branch":"master","displayName":"KamiliArsyad/ip[master]","outputFolderName":"KamiliArsyad_ip_master"},{"location":{"location":"https://github.com/dishenggg/ip.git","repoName":"ip","organization":"dishenggg","domainName":"github"},"branch":"master","displayName":"dishenggg/ip[master]","outputFolderName":"dishenggg_ip_master"},{"location":{"location":"https://github.com/Nixx162/ip.git","repoName":"ip","organization":"Nixx162","domainName":"github"},"branch":"master","displayName":"Nixx162/ip[master]","outputFolderName":"Nixx162_ip_master"},{"location":{"location":"https://github.com/Leb14/ip.git","repoName":"ip","organization":"Leb14","domainName":"github"},"branch":"master","displayName":"Leb14/ip[master]","outputFolderName":"Leb14_ip_master"},{"location":{"location":"https://github.com/Heran9/ip.git","repoName":"ip","organization":"Heran9","domainName":"github"},"branch":"master","displayName":"Heran9/ip[master]","outputFolderName":"Heran9_ip_master"},{"location":{"location":"https://github.com/FerdiHS/ip.git","repoName":"ip","organization":"FerdiHS","domainName":"github"},"branch":"master","displayName":"FerdiHS/ip[master]","outputFolderName":"FerdiHS_ip_master"},{"location":{"location":"https://github.com/StevenLiudw/ip.git","repoName":"ip","organization":"StevenLiudw","domainName":"github"},"branch":"master","displayName":"StevenLiudw/ip[master]","outputFolderName":"StevenLiudw_ip_master"},{"location":{"location":"https://github.com/InfiBeyond/ip.git","repoName":"ip","organization":"InfiBeyond","domainName":"github"},"branch":"master","displayName":"InfiBeyond/ip[master]","outputFolderName":"InfiBeyond_ip_master"},{"location":{"location":"https://github.com/s0ngyang/ip.git","repoName":"ip","organization":"s0ngyang","domainName":"github"},"branch":"master","displayName":"s0ngyang/ip[master]","outputFolderName":"s0ngyang_ip_master"},{"location":{"location":"https://github.com/ivyy-poison/ip.git","repoName":"ip","organization":"ivyy-poison","domainName":"github"},"branch":"master","displayName":"ivyy-poison/ip[master]","outputFolderName":"ivyy-poison_ip_master"},{"location":{"location":"https://github.com/yytan25/ip.git","repoName":"ip","organization":"yytan25","domainName":"github"},"branch":"master","displayName":"yytan25/ip[master]","outputFolderName":"yytan25_ip_master"},{"location":{"location":"https://github.com/tjch-o/ip.git","repoName":"ip","organization":"tjch-o","domainName":"github"},"branch":"master","displayName":"tjch-o/ip[master]","outputFolderName":"tjch-o_ip_master"},{"location":{"location":"https://github.com/jedkohjk/ip.git","repoName":"ip","organization":"jedkohjk","domainName":"github"},"branch":"master","displayName":"jedkohjk/ip[master]","outputFolderName":"jedkohjk_ip_master"},{"location":{"location":"https://github.com/raynertjx/ip.git","repoName":"ip","organization":"raynertjx","domainName":"github"},"branch":"master","displayName":"raynertjx/ip[master]","outputFolderName":"raynertjx_ip_master"},{"location":{"location":"https://github.com/cmHuang777/ip.git","repoName":"ip","organization":"cmHuang777","domainName":"github"},"branch":"master","displayName":"cmHuang777/ip[master]","outputFolderName":"cmHuang777_ip_master"},{"location":{"location":"https://github.com/wui-hong/ip.git","repoName":"ip","organization":"wui-hong","domainName":"github"},"branch":"master","displayName":"wui-hong/ip[master]","outputFolderName":"wui-hong_ip_master"},{"location":{"location":"https://github.com/PohSayKeong/ip.git","repoName":"ip","organization":"PohSayKeong","domainName":"github"},"branch":"master","displayName":"PohSayKeong/ip[master]","outputFolderName":"PohSayKeong_ip_master"},{"location":{"location":"https://github.com/lsyurea/ip.git","repoName":"ip","organization":"lsyurea","domainName":"github"},"branch":"master","displayName":"lsyurea/ip[master]","outputFolderName":"lsyurea_ip_master"},{"location":{"location":"https://github.com/ong-wei-hong/ip.git","repoName":"ip","organization":"ong-wei-hong","domainName":"github"},"branch":"master","displayName":"ong-wei-hong/ip[master]","outputFolderName":"ong-wei-hong_ip_master"},{"location":{"location":"https://github.com/asdfghjkxd/ip.git","repoName":"ip","organization":"asdfghjkxd","domainName":"github"},"branch":"master","displayName":"asdfghjkxd/ip[master]","outputFolderName":"asdfghjkxd_ip_master"},{"location":{"location":"https://github.com/GSgiansen/ip.git","repoName":"ip","organization":"GSgiansen","domainName":"github"},"branch":"master","displayName":"GSgiansen/ip[master]","outputFolderName":"GSgiansen_ip_master"},{"location":{"location":"https://github.com/syamfarh/ip.git","repoName":"ip","organization":"syamfarh","domainName":"github"},"branch":"master","displayName":"syamfarh/ip[master]","outputFolderName":"syamfarh_ip_master"},{"location":{"location":"https://github.com/PetrichorPrecipice/ip.git","repoName":"ip","organization":"PetrichorPrecipice","domainName":"github"},"branch":"master","displayName":"PetrichorPrecipice/ip[master]","outputFolderName":"PetrichorPrecipice_ip_master"},{"location":{"location":"https://github.com/ngeeyonglim/ip.git","repoName":"ip","organization":"ngeeyonglim","domainName":"github"},"branch":"master","displayName":"ngeeyonglim/ip[master]","outputFolderName":"ngeeyonglim_ip_master"},{"location":{"location":"https://github.com/ivanleekk/ip.git","repoName":"ip","organization":"ivanleekk","domainName":"github"},"branch":"master","displayName":"ivanleekk/ip[master]","outputFolderName":"ivanleekk_ip_master"},{"location":{"location":"https://github.com/ryanozx/ip.git","repoName":"ip","organization":"ryanozx","domainName":"github"},"branch":"master","displayName":"ryanozx/ip[master]","outputFolderName":"ryanozx_ip_master"},{"location":{"location":"https://github.com/Jweewee/ip.git","repoName":"ip","organization":"Jweewee","domainName":"github"},"branch":"master","displayName":"Jweewee/ip[master]","outputFolderName":"Jweewee_ip_master"},{"location":{"location":"https://github.com/supermii2/ip.git","repoName":"ip","organization":"supermii2","domainName":"github"},"branch":"master","displayName":"supermii2/ip[master]","outputFolderName":"supermii2_ip_master"},{"location":{"location":"https://github.com/bkjwjason/ip.git","repoName":"ip","organization":"bkjwjason","domainName":"github"},"branch":"master","displayName":"bkjwjason/ip[master]","outputFolderName":"bkjwjason_ip_master"},{"location":{"location":"https://github.com/Sasmik23/ip.git","repoName":"ip","organization":"Sasmik23","domainName":"github"},"branch":"master","displayName":"Sasmik23/ip[master]","outputFolderName":"Sasmik23_ip_master"},{"location":{"location":"https://github.com/nathanielcalimag/ip.git","repoName":"ip","organization":"nathanielcalimag","domainName":"github"},"branch":"master","displayName":"nathanielcalimag/ip[master]","outputFolderName":"nathanielcalimag_ip_master"},{"location":{"location":"https://github.com/AlagappanRa/ip.git","repoName":"ip","organization":"AlagappanRa","domainName":"github"},"branch":"master","displayName":"AlagappanRa/ip[master]","outputFolderName":"AlagappanRa_ip_master"},{"location":{"location":"https://github.com/McNaBry/ip.git","repoName":"ip","organization":"McNaBry","domainName":"github"},"branch":"master","displayName":"McNaBry/ip[master]","outputFolderName":"McNaBry_ip_master"},{"location":{"location":"https://github.com/phiphi-tan/ip.git","repoName":"ip","organization":"phiphi-tan","domainName":"github"},"branch":"master","displayName":"phiphi-tan/ip[master]","outputFolderName":"phiphi-tan_ip_master"},{"location":{"location":"https://github.com/LicongHuang/ip.git","repoName":"ip","organization":"LicongHuang","domainName":"github"},"branch":"master","displayName":"LicongHuang/ip[master]","outputFolderName":"LicongHuang_ip_master"},{"location":{"location":"https://github.com/tanshiyu1999/ip.git","repoName":"ip","organization":"tanshiyu1999","domainName":"github"},"branch":"master","displayName":"tanshiyu1999/ip[master]","outputFolderName":"tanshiyu1999_ip_master"},{"location":{"location":"https://github.com/raydenlim/ip.git","repoName":"ip","organization":"raydenlim","domainName":"github"},"branch":"master","displayName":"raydenlim/ip[master]","outputFolderName":"raydenlim_ip_master"},{"location":{"location":"https://github.com/jianyangg/ip.git","repoName":"ip","organization":"jianyangg","domainName":"github"},"branch":"master","displayName":"jianyangg/ip[master]","outputFolderName":"jianyangg_ip_master"},{"location":{"location":"https://github.com/rionshocker/ip.git","repoName":"ip","organization":"rionshocker","domainName":"github"},"branch":"master","displayName":"rionshocker/ip[master]","outputFolderName":"rionshocker_ip_master"},{"location":{"location":"https://github.com/conradsoon/ip.git","repoName":"ip","organization":"conradsoon","domainName":"github"},"branch":"master","displayName":"conradsoon/ip[master]","outputFolderName":"conradsoon_ip_master"},{"location":{"location":"https://github.com/Jonyxzx/ip.git","repoName":"ip","organization":"Jonyxzx","domainName":"github"},"branch":"master","displayName":"Jonyxzx/ip[master]","outputFolderName":"Jonyxzx_ip_master"},{"location":{"location":"https://github.com/euchangxian/ip.git","repoName":"ip","organization":"euchangxian","domainName":"github"},"branch":"master","displayName":"euchangxian/ip[master]","outputFolderName":"euchangxian_ip_master"},{"location":{"location":"https://github.com/teoks0199/ip.git","repoName":"ip","organization":"teoks0199","domainName":"github"},"branch":"master","displayName":"teoks0199/ip[master]","outputFolderName":"teoks0199_ip_master"},{"location":{"location":"https://github.com/HollaG/ip.git","repoName":"ip","organization":"HollaG","domainName":"github"},"branch":"master","displayName":"HollaG/ip[master]","outputFolderName":"HollaG_ip_master"},{"location":{"location":"https://github.com/leezhengjing/ip.git","repoName":"ip","organization":"leezhengjing","domainName":"github"},"branch":"master","displayName":"leezhengjing/ip[master]","outputFolderName":"leezhengjing_ip_master"},{"location":{"location":"https://github.com/timleow/ip.git","repoName":"ip","organization":"timleow","domainName":"github"},"branch":"master","displayName":"timleow/ip[master]","outputFolderName":"timleow_ip_master"},{"location":{"location":"https://github.com/jacksonyuan256/ip.git","repoName":"ip","organization":"jacksonyuan256","domainName":"github"},"branch":"master","displayName":"jacksonyuan256/ip[master]","outputFolderName":"jacksonyuan256_ip_master"},{"location":{"location":"https://github.com/victorlaiyeeteng/ip.git","repoName":"ip","organization":"victorlaiyeeteng","domainName":"github"},"branch":"master","displayName":"victorlaiyeeteng/ip[master]","outputFolderName":"victorlaiyeeteng_ip_master"},{"location":{"location":"https://github.com/prawnzyy/ip.git","repoName":"ip","organization":"prawnzyy","domainName":"github"},"branch":"master","displayName":"prawnzyy/ip[master]","outputFolderName":"prawnzyy_ip_master"},{"location":{"location":"https://github.com/ryanongwx/ip.git","repoName":"ip","organization":"ryanongwx","domainName":"github"},"branch":"master","displayName":"ryanongwx/ip[master]","outputFolderName":"ryanongwx_ip_master"},{"location":{"location":"https://github.com/tohpinren/ip.git","repoName":"ip","organization":"tohpinren","domainName":"github"},"branch":"master","displayName":"tohpinren/ip[master]","outputFolderName":"tohpinren_ip_master"},{"location":{"location":"https://github.com/DeltonCheng/ip.git","repoName":"ip","organization":"DeltonCheng","domainName":"github"},"branch":"master","displayName":"DeltonCheng/ip[master]","outputFolderName":"DeltonCheng_ip_master"},{"location":{"location":"https://github.com/leontan2/ip.git","repoName":"ip","organization":"leontan2","domainName":"github"},"branch":"master","displayName":"leontan2/ip[master]","outputFolderName":"leontan2_ip_master"},{"location":{"location":"https://github.com/alvinlim277/ip.git","repoName":"ip","organization":"alvinlim277","domainName":"github"},"branch":"master","displayName":"alvinlim277/ip[master]","outputFolderName":"alvinlim277_ip_master"},{"location":{"location":"https://github.com/lshaoqin/ip.git","repoName":"ip","organization":"lshaoqin","domainName":"github"},"branch":"master","displayName":"lshaoqin/ip[master]","outputFolderName":"lshaoqin_ip_master"},{"location":{"location":"https://github.com/ChongWeiJie29/ip.git","repoName":"ip","organization":"ChongWeiJie29","domainName":"github"},"branch":"master","displayName":"ChongWeiJie29/ip[master]","outputFolderName":"ChongWeiJie29_ip_master"},{"location":{"location":"https://github.com/zhonghan721/ip.git","repoName":"ip","organization":"zhonghan721","domainName":"github"},"branch":"master","displayName":"zhonghan721/ip[master]","outputFolderName":"zhonghan721_ip_master"},{"location":{"location":"https://github.com/teozhengyang/ip.git","repoName":"ip","organization":"teozhengyang","domainName":"github"},"branch":"master","displayName":"teozhengyang/ip[master]","outputFolderName":"teozhengyang_ip_master"},{"location":{"location":"https://github.com/garylow2001/ip.git","repoName":"ip","organization":"garylow2001","domainName":"github"},"branch":"master","displayName":"garylow2001/ip[master]","outputFolderName":"garylow2001_ip_master"},{"location":{"location":"https://github.com/Cleon2/ip.git","repoName":"ip","organization":"Cleon2","domainName":"github"},"branch":"master","displayName":"Cleon2/ip[master]","outputFolderName":"Cleon2_ip_master"},{"location":{"location":"https://github.com/limzhenwy/ip.git","repoName":"ip","organization":"limzhenwy","domainName":"github"},"branch":"master","displayName":"limzhenwy/ip[master]","outputFolderName":"limzhenwy_ip_master"},{"location":{"location":"https://github.com/ItsTYtan/ip.git","repoName":"ip","organization":"ItsTYtan","domainName":"github"},"branch":"master","displayName":"ItsTYtan/ip[master]","outputFolderName":"ItsTYtan_ip_master"},{"location":{"location":"https://github.com/owenyeo/ip.git","repoName":"ip","organization":"owenyeo","domainName":"github"},"branch":"master","displayName":"owenyeo/ip[master]","outputFolderName":"owenyeo_ip_master"},{"location":{"location":"https://github.com/jonasongg/ip.git","repoName":"ip","organization":"jonasongg","domainName":"github"},"branch":"master","displayName":"jonasongg/ip[master]","outputFolderName":"jonasongg_ip_master"},{"location":{"location":"https://github.com/Ruizhi2001/ip.git","repoName":"ip","organization":"Ruizhi2001","domainName":"github"},"branch":"master","displayName":"Ruizhi2001/ip[master]","outputFolderName":"Ruizhi2001_ip_master"},{"location":{"location":"https://github.com/Dioclei/ip.git","repoName":"ip","organization":"Dioclei","domainName":"github"},"branch":"master","displayName":"Dioclei/ip[master]","outputFolderName":"Dioclei_ip_master"},{"location":{"location":"https://github.com/bobscodedump/ip.git","repoName":"ip","organization":"bobscodedump","domainName":"github"},"branch":"master","displayName":"bobscodedump/ip[master]","outputFolderName":"bobscodedump_ip_master"},{"location":{"location":"https://github.com/andrefoo/ip.git","repoName":"ip","organization":"andrefoo","domainName":"github"},"branch":"master","displayName":"andrefoo/ip[master]","outputFolderName":"andrefoo_ip_master"},{"location":{"location":"https://github.com/Bombbird2001/ip.git","repoName":"ip","organization":"Bombbird2001","domainName":"github"},"branch":"master","displayName":"Bombbird2001/ip[master]","outputFolderName":"Bombbird2001_ip_master"},{"location":{"location":"https://github.com/chewjh1234/ip.git","repoName":"ip","organization":"chewjh1234","domainName":"github"},"branch":"master","displayName":"chewjh1234/ip[master]","outputFolderName":"chewjh1234_ip_master"},{"location":{"location":"https://github.com/dloh2236/ip.git","repoName":"ip","organization":"dloh2236","domainName":"github"},"branch":"master","displayName":"dloh2236/ip[master]","outputFolderName":"dloh2236_ip_master"},{"location":{"location":"https://github.com/chew01/ip.git","repoName":"ip","organization":"chew01","domainName":"github"},"branch":"master","displayName":"chew01/ip[master]","outputFolderName":"chew01_ip_master"},{"location":{"location":"https://github.com/trgao/ip.git","repoName":"ip","organization":"trgao","domainName":"github"},"branch":"master","displayName":"trgao/ip[master]","outputFolderName":"trgao_ip_master"},{"location":{"location":"https://github.com/richiehx/ip.git","repoName":"ip","organization":"richiehx","domainName":"github"},"branch":"master","displayName":"richiehx/ip[master]","outputFolderName":"richiehx_ip_master"},{"location":{"location":"https://github.com/LoMaply/ip.git","repoName":"ip","organization":"LoMaply","domainName":"github"},"branch":"master","displayName":"LoMaply/ip[master]","outputFolderName":"LoMaply_ip_master"},{"location":{"location":"https://github.com/Originalidk/ip.git","repoName":"ip","organization":"Originalidk","domainName":"github"},"branch":"master","displayName":"Originalidk/ip[master]","outputFolderName":"Originalidk_ip_master"},{"location":{"location":"https://github.com/kiatkat/ip.git","repoName":"ip","organization":"kiatkat","domainName":"github"},"branch":"master","displayName":"kiatkat/ip[master]","outputFolderName":"kiatkat_ip_master"},{"location":{"location":"https://github.com/juliusgambe/ip.git","repoName":"ip","organization":"juliusgambe","domainName":"github"},"branch":"master","displayName":"juliusgambe/ip[master]","outputFolderName":"juliusgambe_ip_master"},{"location":{"location":"https://github.com/jiakai-17/ip.git","repoName":"ip","organization":"jiakai-17","domainName":"github"},"branch":"master","displayName":"jiakai-17/ip[master]","outputFolderName":"jiakai-17_ip_master"},{"location":{"location":"https://github.com/nikele2001/ip.git","repoName":"ip","organization":"nikele2001","domainName":"github"},"branch":"master","displayName":"nikele2001/ip[master]","outputFolderName":"nikele2001_ip_master"},{"location":{"location":"https://github.com/jylow/ip.git","repoName":"ip","organization":"jylow","domainName":"github"},"branch":"master","displayName":"jylow/ip[master]","outputFolderName":"jylow_ip_master"},{"location":{"location":"https://github.com/jx124/ip.git","repoName":"ip","organization":"jx124","domainName":"github"},"branch":"master","displayName":"jx124/ip[master]","outputFolderName":"jx124_ip_master"},{"location":{"location":"https://github.com/Kb-Tay/ip.git","repoName":"ip","organization":"Kb-Tay","domainName":"github"},"branch":"master","displayName":"Kb-Tay/ip[master]","outputFolderName":"Kb-Tay_ip_master"},{"location":{"location":"https://github.com/jinyuan0425/ip.git","repoName":"ip","organization":"jinyuan0425","domainName":"github"},"branch":"master","displayName":"jinyuan0425/ip[master]","outputFolderName":"jinyuan0425_ip_master"},{"location":{"location":"https://github.com/darrentfy/ip.git","repoName":"ip","organization":"darrentfy","domainName":"github"},"branch":"master","displayName":"darrentfy/ip[master]","outputFolderName":"darrentfy_ip_master"},{"location":{"location":"https://github.com/HEEaZ/ip.git","repoName":"ip","organization":"HEEaZ","domainName":"github"},"branch":"master","displayName":"HEEaZ/ip[master]","outputFolderName":"HEEaZ_ip_master"},{"location":{"location":"https://github.com/ji-just-ji/ip.git","repoName":"ip","organization":"ji-just-ji","domainName":"github"},"branch":"master","displayName":"ji-just-ji/ip[master]","outputFolderName":"ji-just-ji_ip_master"},{"location":{"location":"https://github.com/simbayippy/ip.git","repoName":"ip","organization":"simbayippy","domainName":"github"},"branch":"master","displayName":"simbayippy/ip[master]","outputFolderName":"simbayippy_ip_master"},{"location":{"location":"https://github.com/teozern1/ip.git","repoName":"ip","organization":"teozern1","domainName":"github"},"branch":"master","displayName":"teozern1/ip[master]","outputFolderName":"teozern1_ip_master"},{"location":{"location":"https://github.com/brein62/ip.git","repoName":"ip","organization":"brein62","domainName":"github"},"branch":"master","displayName":"brein62/ip[master]","outputFolderName":"brein62_ip_master"},{"location":{"location":"https://github.com/awhb/ip.git","repoName":"ip","organization":"awhb","domainName":"github"},"branch":"master","displayName":"awhb/ip[master]","outputFolderName":"awhb_ip_master"},{"location":{"location":"https://github.com/Mahidharah/ip.git","repoName":"ip","organization":"Mahidharah","domainName":"github"},"branch":"master","displayName":"Mahidharah/ip[master]","outputFolderName":"Mahidharah_ip_master"},{"location":{"location":"https://github.com/timetraveller-123/ip.git","repoName":"ip","organization":"timetraveller-123","domainName":"github"},"branch":"master","displayName":"timetraveller-123/ip[master]","outputFolderName":"timetraveller-123_ip_master"},{"location":{"location":"https://github.com/ElginTZM/ip.git","repoName":"ip","organization":"ElginTZM","domainName":"github"},"branch":"master","displayName":"ElginTZM/ip[master]","outputFolderName":"ElginTZM_ip_master"},{"location":{"location":"https://github.com/ryamgoh/ip.git","repoName":"ip","organization":"ryamgoh","domainName":"github"},"branch":"master","displayName":"ryamgoh/ip[master]","outputFolderName":"ryamgoh_ip_master"},{"location":{"location":"https://github.com/Blizzeracz/ip.git","repoName":"ip","organization":"Blizzeracz","domainName":"github"},"branch":"master","displayName":"Blizzeracz/ip[master]","outputFolderName":"Blizzeracz_ip_master"},{"location":{"location":"https://github.com/kiwibang/ip.git","repoName":"ip","organization":"kiwibang","domainName":"github"},"branch":"master","displayName":"kiwibang/ip[master]","outputFolderName":"kiwibang_ip_master"},{"location":{"location":"https://github.com/redtailedfox/ip.git","repoName":"ip","organization":"redtailedfox","domainName":"github"},"branch":"master","displayName":"redtailedfox/ip[master]","outputFolderName":"redtailedfox_ip_master"},{"location":{"location":"https://github.com/lamchenghou/ip.git","repoName":"ip","organization":"lamchenghou","domainName":"github"},"branch":"master","displayName":"lamchenghou/ip[master]","outputFolderName":"lamchenghou_ip_master"},{"location":{"location":"https://github.com/gongg21/ip.git","repoName":"ip","organization":"gongg21","domainName":"github"},"branch":"master","displayName":"gongg21/ip[master]","outputFolderName":"gongg21_ip_master"},{"location":{"location":"https://github.com/CJ-Lee01/ip.git","repoName":"ip","organization":"CJ-Lee01","domainName":"github"},"branch":"master","displayName":"CJ-Lee01/ip[master]","outputFolderName":"CJ-Lee01_ip_master"},{"location":{"location":"https://github.com/Sheeepen/ip.git","repoName":"ip","organization":"Sheeepen","domainName":"github"},"branch":"master","displayName":"Sheeepen/ip[master]","outputFolderName":"Sheeepen_ip_master"},{"location":{"location":"https://github.com/AaronJT1/ip.git","repoName":"ip","organization":"AaronJT1","domainName":"github"},"branch":"master","displayName":"AaronJT1/ip[master]","outputFolderName":"AaronJT1_ip_master"},{"location":{"location":"https://github.com/Respirayson/ip.git","repoName":"ip","organization":"Respirayson","domainName":"github"},"branch":"master","displayName":"Respirayson/ip[master]","outputFolderName":"Respirayson_ip_master"},{"location":{"location":"https://github.com/dickongwd/ip.git","repoName":"ip","organization":"dickongwd","domainName":"github"},"branch":"master","displayName":"dickongwd/ip[master]","outputFolderName":"dickongwd_ip_master"},{"location":{"location":"https://github.com/nicholascher/ip.git","repoName":"ip","organization":"nicholascher","domainName":"github"},"branch":"master","displayName":"nicholascher/ip[master]","outputFolderName":"nicholascher_ip_master"},{"location":{"location":"https://github.com/et-irl/ip.git","repoName":"ip","organization":"et-irl","domainName":"github"},"branch":"master","displayName":"et-irl/ip[master]","outputFolderName":"et-irl_ip_master"},{"location":{"location":"https://github.com/aslam341/ip.git","repoName":"ip","organization":"aslam341","domainName":"github"},"branch":"master","displayName":"aslam341/ip[master]","outputFolderName":"aslam341_ip_master"},{"location":{"location":"https://github.com/seantehds/ip.git","repoName":"ip","organization":"seantehds","domainName":"github"},"branch":"master","displayName":"seantehds/ip[master]","outputFolderName":"seantehds_ip_master"},{"location":{"location":"https://github.com/jianrong7/ip.git","repoName":"ip","organization":"jianrong7","domainName":"github"},"branch":"master","displayName":"jianrong7/ip[master]","outputFolderName":"jianrong7_ip_master"},{"location":{"location":"https://github.com/TeeRenJing/ip.git","repoName":"ip","organization":"TeeRenJing","domainName":"github"},"branch":"master","displayName":"TeeRenJing/ip[master]","outputFolderName":"TeeRenJing_ip_master"},{"location":{"location":"https://github.com/RoeReRe/ip.git","repoName":"ip","organization":"RoeReRe","domainName":"github"},"branch":"master","displayName":"RoeReRe/ip[master]","outputFolderName":"RoeReRe_ip_master"},{"location":{"location":"https://github.com/zsh-eng/ip.git","repoName":"ip","organization":"zsh-eng","domainName":"github"},"branch":"master","displayName":"zsh-eng/ip[master]","outputFolderName":"zsh-eng_ip_master"},{"location":{"location":"https://github.com/seanpzk/ip.git","repoName":"ip","organization":"seanpzk","domainName":"github"},"branch":"master","displayName":"seanpzk/ip[master]","outputFolderName":"seanpzk_ip_master"},{"location":{"location":"https://github.com/quzhetao01/ip.git","repoName":"ip","organization":"quzhetao01","domainName":"github"},"branch":"master","displayName":"quzhetao01/ip[master]","outputFolderName":"quzhetao01_ip_master"},{"location":{"location":"https://github.com/joel-foo/ip.git","repoName":"ip","organization":"joel-foo","domainName":"github"},"branch":"master","displayName":"joel-foo/ip[master]","outputFolderName":"joel-foo_ip_master"},{"location":{"location":"https://github.com/markgcera/ip.git","repoName":"ip","organization":"markgcera","domainName":"github"},"branch":"master","displayName":"markgcera/ip[master]","outputFolderName":"markgcera_ip_master"},{"location":{"location":"https://github.com/dylkaw/ip.git","repoName":"ip","organization":"dylkaw","domainName":"github"},"branch":"master","displayName":"dylkaw/ip[master]","outputFolderName":"dylkaw_ip_master"},{"location":{"location":"https://github.com/SelwynAng/ip.git","repoName":"ip","organization":"SelwynAng","domainName":"github"},"branch":"master","displayName":"SelwynAng/ip[master]","outputFolderName":"SelwynAng_ip_master"},{"location":{"location":"https://github.com/jinyang628/ip.git","repoName":"ip","organization":"jinyang628","domainName":"github"},"branch":"master","displayName":"jinyang628/ip[master]","outputFolderName":"jinyang628_ip_master"},{"location":{"location":"https://github.com/matochichap/ip.git","repoName":"ip","organization":"matochichap","domainName":"github"},"branch":"master","displayName":"matochichap/ip[master]","outputFolderName":"matochichap_ip_master"},{"location":{"location":"https://github.com/sk2001git/ip.git","repoName":"ip","organization":"sk2001git","domainName":"github"},"branch":"master","displayName":"sk2001git/ip[master]","outputFolderName":"sk2001git_ip_master"},{"location":{"location":"https://github.com/jason-raiin/ip.git","repoName":"ip","organization":"jason-raiin","domainName":"github"},"branch":"master","displayName":"jason-raiin/ip[master]","outputFolderName":"jason-raiin_ip_master"},{"location":{"location":"https://github.com/Sebtey/ip.git","repoName":"ip","organization":"Sebtey","domainName":"github"},"branch":"master","displayName":"Sebtey/ip[master]","outputFolderName":"Sebtey_ip_master"},{"location":{"location":"https://github.com/Jweng88/ip.git","repoName":"ip","organization":"Jweng88","domainName":"github"},"branch":"master","displayName":"Jweng88/ip[master]","outputFolderName":"Jweng88_ip_master"},{"location":{"location":"https://github.com/billieboy7/ip.git","repoName":"ip","organization":"billieboy7","domainName":"github"},"branch":"master","displayName":"billieboy7/ip[master]","outputFolderName":"billieboy7_ip_master"},{"location":{"location":"https://github.com/ldinghan/ip.git","repoName":"ip","organization":"ldinghan","domainName":"github"},"branch":"master","displayName":"ldinghan/ip[master]","outputFolderName":"ldinghan_ip_master"},{"location":{"location":"https://github.com/anthonytamzil/ip.git","repoName":"ip","organization":"anthonytamzil","domainName":"github"},"branch":"master","displayName":"anthonytamzil/ip[master]","outputFolderName":"anthonytamzil_ip_master"},{"location":{"location":"https://github.com/ryantzr1/ip.git","repoName":"ip","organization":"ryantzr1","domainName":"github"},"branch":"master","displayName":"ryantzr1/ip[master]","outputFolderName":"ryantzr1_ip_master"},{"location":{"location":"https://github.com/shuyangk/ip.git","repoName":"ip","organization":"shuyangk","domainName":"github"},"branch":"master","displayName":"shuyangk/ip[master]","outputFolderName":"shuyangk_ip_master"},{"location":{"location":"https://github.com/seewhyjay/ip.git","repoName":"ip","organization":"seewhyjay","domainName":"github"},"branch":"master","displayName":"seewhyjay/ip[master]","outputFolderName":"seewhyjay_ip_master"},{"location":{"location":"https://github.com/waseemingly/ip.git","repoName":"ip","organization":"waseemingly","domainName":"github"},"branch":"master","displayName":"waseemingly/ip[master]","outputFolderName":"waseemingly_ip_master"},{"location":{"location":"https://github.com/DistractedCat/ip.git","repoName":"ip","organization":"DistractedCat","domainName":"github"},"branch":"master","displayName":"DistractedCat/ip[master]","outputFolderName":"DistractedCat_ip_master"},{"location":{"location":"https://github.com/geraldngjx/ip.git","repoName":"ip","organization":"geraldngjx","domainName":"github"},"branch":"master","displayName":"geraldngjx/ip[master]","outputFolderName":"geraldngjx_ip_master"},{"location":{"location":"https://github.com/tayian/ip.git","repoName":"ip","organization":"tayian","domainName":"github"},"branch":"master","displayName":"tayian/ip[master]","outputFolderName":"tayian_ip_master"},{"location":{"location":"https://github.com/AlfredBeNoel/ip.git","repoName":"ip","organization":"AlfredBeNoel","domainName":"github"},"branch":"master","displayName":"AlfredBeNoel/ip[master]","outputFolderName":"AlfredBeNoel_ip_master"},{"location":{"location":"https://github.com/Chen1x/ip.git","repoName":"ip","organization":"Chen1x","domainName":"github"},"branch":"master","displayName":"Chen1x/ip[master]","outputFolderName":"Chen1x_ip_master"},{"location":{"location":"https://github.com/juzzztinsoong/ip.git","repoName":"ip","organization":"juzzztinsoong","domainName":"github"},"branch":"master","displayName":"juzzztinsoong/ip[master]","outputFolderName":"juzzztinsoong_ip_master"},{"location":{"location":"https://github.com/lambraydon/ip.git","repoName":"ip","organization":"lambraydon","domainName":"github"},"branch":"master","displayName":"lambraydon/ip[master]","outputFolderName":"lambraydon_ip_master"},{"location":{"location":"https://github.com/lilozz2/ip.git","repoName":"ip","organization":"lilozz2","domainName":"github"},"branch":"master","displayName":"lilozz2/ip[master]","outputFolderName":"lilozz2_ip_master"},{"location":{"location":"https://github.com/tyouwei/ip.git","repoName":"ip","organization":"tyouwei","domainName":"github"},"branch":"master","displayName":"tyouwei/ip[master]","outputFolderName":"tyouwei_ip_master"},{"location":{"location":"https://github.com/Kailash201/ip.git","repoName":"ip","organization":"Kailash201","domainName":"github"},"branch":"master","displayName":"Kailash201/ip[master]","outputFolderName":"Kailash201_ip_master"},{"location":{"location":"https://github.com/tjingsheng/ip.git","repoName":"ip","organization":"tjingsheng","domainName":"github"},"branch":"master","displayName":"tjingsheng/ip[master]","outputFolderName":"tjingsheng_ip_master"},{"location":{"location":"https://github.com/pangyyen/ip.git","repoName":"ip","organization":"pangyyen","domainName":"github"},"branch":"master","displayName":"pangyyen/ip[master]","outputFolderName":"pangyyen_ip_master"},{"location":{"location":"https://github.com/Khaleelur-Rahman/ip.git","repoName":"ip","organization":"Khaleelur-Rahman","domainName":"github"},"branch":"master","displayName":"Khaleelur-Rahman/ip[master]","outputFolderName":"Khaleelur-Rahman_ip_master"},{"location":{"location":"https://github.com/erohsikivar/ip.git","repoName":"ip","organization":"erohsikivar","domainName":"github"},"branch":"master","displayName":"erohsikivar/ip[master]","outputFolderName":"erohsikivar_ip_master"},{"location":{"location":"https://github.com/shishirbychapur/ip.git","repoName":"ip","organization":"shishirbychapur","domainName":"github"},"branch":"master","displayName":"shishirbychapur/ip[master]","outputFolderName":"shishirbychapur_ip_master"},{"location":{"location":"https://github.com/Badatprogrammiing/ip.git","repoName":"ip","organization":"Badatprogrammiing","domainName":"github"},"branch":"master","displayName":"Badatprogrammiing/ip[master]","outputFolderName":"Badatprogrammiing_ip_master"},{"location":{"location":"https://github.com/ravern/ip.git","repoName":"ip","organization":"ravern","domainName":"github"},"branch":"master","displayName":"ravern/ip[master]","outputFolderName":"ravern_ip_master"},{"location":{"location":"https://github.com/B-enguin/ip.git","repoName":"ip","organization":"B-enguin","domainName":"github"},"branch":"master","displayName":"B-enguin/ip[master]","outputFolderName":"B-enguin_ip_master"},{"location":{"location":"https://github.com/AlyssaPng/ip.git","repoName":"ip","organization":"AlyssaPng","domainName":"github"},"branch":"master","displayName":"AlyssaPng/ip[master]","outputFolderName":"AlyssaPng_ip_master"},{"location":{"location":"https://github.com/flexibo/ip.git","repoName":"ip","organization":"flexibo","domainName":"github"},"branch":"master","displayName":"flexibo/ip[master]","outputFolderName":"flexibo_ip_master"},{"location":{"location":"https://github.com/lordidiot/ip.git","repoName":"ip","organization":"lordidiot","domainName":"github"},"branch":"master","displayName":"lordidiot/ip[master]","outputFolderName":"lordidiot_ip_master"},{"location":{"location":"https://github.com/vansh284/ip.git","repoName":"ip","organization":"vansh284","domainName":"github"},"branch":"master","displayName":"vansh284/ip[master]","outputFolderName":"vansh284_ip_master"},{"location":{"location":"https://github.com/samuelim01/ip.git","repoName":"ip","organization":"samuelim01","domainName":"github"},"branch":"master","displayName":"samuelim01/ip[master]","outputFolderName":"samuelim01_ip_master"},{"location":{"location":"https://github.com/WZWren/ip.git","repoName":"ip","organization":"WZWren","domainName":"github"},"branch":"master","displayName":"WZWren/ip[master]","outputFolderName":"WZWren_ip_master"},{"location":{"location":"https://github.com/cxo05/ip.git","repoName":"ip","organization":"cxo05","domainName":"github"},"branch":"master","displayName":"cxo05/ip[master]","outputFolderName":"cxo05_ip_master"},{"location":{"location":"https://github.com/sudarshan2401/ip.git","repoName":"ip","organization":"sudarshan2401","domainName":"github"},"branch":"master","displayName":"sudarshan2401/ip[master]","outputFolderName":"sudarshan2401_ip_master"},{"location":{"location":"https://github.com/jingyu987/ip.git","repoName":"ip","organization":"jingyu987","domainName":"github"},"branch":"master","displayName":"jingyu987/ip[master]","outputFolderName":"jingyu987_ip_master"},{"location":{"location":"https://github.com/H1410101/ip.git","repoName":"ip","organization":"H1410101","domainName":"github"},"branch":"master","displayName":"H1410101/ip[master]","outputFolderName":"H1410101_ip_master"},{"location":{"location":"https://github.com/MagnificentCreature/ip.git","repoName":"ip","organization":"MagnificentCreature","domainName":"github"},"branch":"master","displayName":"MagnificentCreature/ip[master]","outputFolderName":"MagnificentCreature_ip_master"},{"location":{"location":"https://github.com/shyanyong/ip.git","repoName":"ip","organization":"shyanyong","domainName":"github"},"branch":"master","displayName":"shyanyong/ip[master]","outputFolderName":"shyanyong_ip_master"},{"location":{"location":"https://github.com/peasantbird/ip.git","repoName":"ip","organization":"peasantbird","domainName":"github"},"branch":"master","displayName":"peasantbird/ip[master]","outputFolderName":"peasantbird_ip_master"},{"location":{"location":"https://github.com/tllshan/ip.git","repoName":"ip","organization":"tllshan","domainName":"github"},"branch":"master","displayName":"tllshan/ip[master]","outputFolderName":"tllshan_ip_master"},{"location":{"location":"https://github.com/sushiyade/ip.git","repoName":"ip","organization":"sushiyade","domainName":"github"},"branch":"master","displayName":"sushiyade/ip[master]","outputFolderName":"sushiyade_ip_master"},{"location":{"location":"https://github.com/iyioon/ip.git","repoName":"ip","organization":"iyioon","domainName":"github"},"branch":"master","displayName":"iyioon/ip[master]","outputFolderName":"iyioon_ip_master"},{"location":{"location":"https://github.com/shashahchk/ip.git","repoName":"ip","organization":"shashahchk","domainName":"github"},"branch":"master","displayName":"shashahchk/ip[master]","outputFolderName":"shashahchk_ip_master"},{"location":{"location":"https://github.com/Chandan8186/ip.git","repoName":"ip","organization":"Chandan8186","domainName":"github"},"branch":"master","displayName":"Chandan8186/ip[master]","outputFolderName":"Chandan8186_ip_master"},{"location":{"location":"https://github.com/wesho1107/ip.git","repoName":"ip","organization":"wesho1107","domainName":"github"},"branch":"master","displayName":"wesho1107/ip[master]","outputFolderName":"wesho1107_ip_master"},{"location":{"location":"https://github.com/tim-pipi/ip.git","repoName":"ip","organization":"tim-pipi","domainName":"github"},"branch":"master","displayName":"tim-pipi/ip[master]","outputFolderName":"tim-pipi_ip_master"},{"location":{"location":"https://github.com/emzm2023/ip.git","repoName":"ip","organization":"emzm2023","domainName":"github"},"branch":"master","displayName":"emzm2023/ip[master]","outputFolderName":"emzm2023_ip_master"},{"location":{"location":"https://github.com/dlathyun/ip.git","repoName":"ip","organization":"dlathyun","domainName":"github"},"branch":"master","displayName":"dlathyun/ip[master]","outputFolderName":"dlathyun_ip_master"},{"location":{"location":"https://github.com/tanboonkhong/ip.git","repoName":"ip","organization":"tanboonkhong","domainName":"github"},"branch":"master","displayName":"tanboonkhong/ip[master]","outputFolderName":"tanboonkhong_ip_master"},{"location":{"location":"https://github.com/joeng03/ip.git","repoName":"ip","organization":"joeng03","domainName":"github"},"branch":"master","displayName":"joeng03/ip[master]","outputFolderName":"joeng03_ip_master"},{"location":{"location":"https://github.com/VN-Hao/ip.git","repoName":"ip","organization":"VN-Hao","domainName":"github"},"branch":"master","displayName":"VN-Hao/ip[master]","outputFolderName":"VN-Hao_ip_master"},{"location":{"location":"https://github.com/NgChunMan/ip.git","repoName":"ip","organization":"NgChunMan","domainName":"github"},"branch":"master","displayName":"NgChunMan/ip[master]","outputFolderName":"NgChunMan_ip_master"},{"location":{"location":"https://github.com/TiwKangXu/ip.git","repoName":"ip","organization":"TiwKangXu","domainName":"github"},"branch":"master","displayName":"TiwKangXu/ip[master]","outputFolderName":"TiwKangXu_ip_master"},{"location":{"location":"https://github.com/josepholim/ip.git","repoName":"ip","organization":"josepholim","domainName":"github"},"branch":"master","displayName":"josepholim/ip[master]","outputFolderName":"josepholim_ip_master"},{"location":{"location":"https://github.com/dinde2004/ip.git","repoName":"ip","organization":"dinde2004","domainName":"github"},"branch":"master","displayName":"dinde2004/ip[master]","outputFolderName":"dinde2004_ip_master"},{"location":{"location":"https://github.com/yucongkoo/ip.git","repoName":"ip","organization":"yucongkoo","domainName":"github"},"branch":"master","displayName":"yucongkoo/ip[master]","outputFolderName":"yucongkoo_ip_master"},{"location":{"location":"https://github.com/TohLiYuan/ip.git","repoName":"ip","organization":"TohLiYuan","domainName":"github"},"branch":"master","displayName":"TohLiYuan/ip[master]","outputFolderName":"TohLiYuan_ip_master"},{"location":{"location":"https://github.com/NereusWB922/ip.git","repoName":"ip","organization":"NereusWB922","domainName":"github"},"branch":"master","displayName":"NereusWB922/ip[master]","outputFolderName":"NereusWB922_ip_master"},{"location":{"location":"https://github.com/ph-nathan/ip.git","repoName":"ip","organization":"ph-nathan","domainName":"github"},"branch":"master","displayName":"ph-nathan/ip[master]","outputFolderName":"ph-nathan_ip_master"},{"location":{"location":"https://github.com/antonTan96/ip.git","repoName":"ip","organization":"antonTan96","domainName":"github"},"branch":"master","displayName":"antonTan96/ip[master]","outputFolderName":"antonTan96_ip_master"},{"location":{"location":"https://github.com/WinstonLeonard/ip.git","repoName":"ip","organization":"WinstonLeonard","domainName":"github"},"branch":"master","displayName":"WinstonLeonard/ip[master]","outputFolderName":"WinstonLeonard_ip_master"},{"location":{"location":"https://github.com/TehOPanas/ip.git","repoName":"ip","organization":"TehOPanas","domainName":"github"},"branch":"master","displayName":"TehOPanas/ip[master]","outputFolderName":"TehOPanas_ip_master"},{"location":{"location":"https://github.com/marioalvaro/ip.git","repoName":"ip","organization":"marioalvaro","domainName":"github"},"branch":"master","displayName":"marioalvaro/ip[master]","outputFolderName":"marioalvaro_ip_master"},{"location":{"location":"https://github.com/LINCHENYU2030S/ip.git","repoName":"ip","organization":"LINCHENYU2030S","domainName":"github"},"branch":"master","displayName":"LINCHENYU2030S/ip[master]","outputFolderName":"LINCHENYU2030S_ip_master"},{"location":{"location":"https://github.com/LamJiuFong/ip.git","repoName":"ip","organization":"LamJiuFong","domainName":"github"},"branch":"master","displayName":"LamJiuFong/ip[master]","outputFolderName":"LamJiuFong_ip_master"},{"location":{"location":"https://github.com/AndrewJanong/ip.git","repoName":"ip","organization":"AndrewJanong","domainName":"github"},"branch":"master","displayName":"AndrewJanong/ip[master]","outputFolderName":"AndrewJanong_ip_master"},{"location":{"location":"https://github.com/songfangyl/ip.git","repoName":"ip","organization":"songfangyl","domainName":"github"},"branch":"master","displayName":"songfangyl/ip[master]","outputFolderName":"songfangyl_ip_master"},{"location":{"location":"https://github.com/AriellaCallista/ip.git","repoName":"ip","organization":"AriellaCallista","domainName":"github"},"branch":"master","displayName":"AriellaCallista/ip[master]","outputFolderName":"AriellaCallista_ip_master"},{"location":{"location":"https://github.com/KamJiaYue/ip.git","repoName":"ip","organization":"KamJiaYue","domainName":"github"},"branch":"master","displayName":"KamJiaYue/ip[master]","outputFolderName":"KamJiaYue_ip_master"},{"location":{"location":"https://github.com/feifeiraindrops/ip.git","repoName":"ip","organization":"feifeiraindrops","domainName":"github"},"branch":"master","displayName":"feifeiraindrops/ip[master]","outputFolderName":"feifeiraindrops_ip_master"},{"location":{"location":"https://github.com/czhiruo/ip.git","repoName":"ip","organization":"czhiruo","domainName":"github"},"branch":"master","displayName":"czhiruo/ip[master]","outputFolderName":"czhiruo_ip_master"},{"location":{"location":"https://github.com/butteredyakiimo/ip.git","repoName":"ip","organization":"butteredyakiimo","domainName":"github"},"branch":"master","displayName":"butteredyakiimo/ip[master]","outputFolderName":"butteredyakiimo_ip_master"},{"location":{"location":"https://github.com/RiyaMehta2211/ip.git","repoName":"ip","organization":"RiyaMehta2211","domainName":"github"},"branch":"master","displayName":"RiyaMehta2211/ip[master]","outputFolderName":"RiyaMehta2211_ip_master"},{"location":{"location":"https://github.com/beatricecst/ip.git","repoName":"ip","organization":"beatricecst","domainName":"github"},"branch":"master","displayName":"beatricecst/ip[master]","outputFolderName":"beatricecst_ip_master"},{"location":{"location":"https://github.com/maypfv/ip.git","repoName":"ip","organization":"maypfv","domainName":"github"},"branch":"master","displayName":"maypfv/ip[master]","outputFolderName":"maypfv_ip_master"},{"location":{"location":"https://github.com/pra-navi/ip.git","repoName":"ip","organization":"pra-navi","domainName":"github"},"branch":"master","displayName":"pra-navi/ip[master]","outputFolderName":"pra-navi_ip_master"},{"location":{"location":"https://github.com/xxiaoweii/ip.git","repoName":"ip","organization":"xxiaoweii","domainName":"github"},"branch":"master","displayName":"xxiaoweii/ip[master]","outputFolderName":"xxiaoweii_ip_master"},{"location":{"location":"https://github.com/qyaner/ip.git","repoName":"ip","organization":"qyaner","domainName":"github"},"branch":"master","displayName":"qyaner/ip[master]","outputFolderName":"qyaner_ip_master"},{"location":{"location":"https://github.com/qz1004/ip.git","repoName":"ip","organization":"qz1004","domainName":"github"},"branch":"master","displayName":"qz1004/ip[master]","outputFolderName":"qz1004_ip_master"},{"location":{"location":"https://github.com/miljyy/ip.git","repoName":"ip","organization":"miljyy","domainName":"github"},"branch":"master","displayName":"miljyy/ip[master]","outputFolderName":"miljyy_ip_master"},{"location":{"location":"https://github.com/yihfei/ip.git","repoName":"ip","organization":"yihfei","domainName":"github"},"branch":"master","displayName":"yihfei/ip[master]","outputFolderName":"yihfei_ip_master"},{"location":{"location":"https://github.com/Gabriel4357/ip.git","repoName":"ip","organization":"Gabriel4357","domainName":"github"},"branch":"master","displayName":"Gabriel4357/ip[master]","outputFolderName":"Gabriel4357_ip_master"},{"location":{"location":"https://github.com/saraozn/ip.git","repoName":"ip","organization":"saraozn","domainName":"github"},"branch":"master","displayName":"saraozn/ip[master]","outputFolderName":"saraozn_ip_master"},{"location":{"location":"https://github.com/JeremyYong128/ip.git","repoName":"ip","organization":"JeremyYong128","domainName":"github"},"branch":"master","displayName":"JeremyYong128/ip[master]","outputFolderName":"JeremyYong128_ip_master"},{"location":{"location":"https://github.com/samuelmui8/ip.git","repoName":"ip","organization":"samuelmui8","domainName":"github"},"branch":"master","displayName":"samuelmui8/ip[master]","outputFolderName":"samuelmui8_ip_master"},{"location":{"location":"https://github.com/elaineshijie/ip.git","repoName":"ip","organization":"elaineshijie","domainName":"github"},"branch":"master","displayName":"elaineshijie/ip[master]","outputFolderName":"elaineshijie_ip_master"},{"location":{"location":"https://github.com/zhengyup/ip.git","repoName":"ip","organization":"zhengyup","domainName":"github"},"branch":"master","displayName":"zhengyup/ip[master]","outputFolderName":"zhengyup_ip_master"},{"location":{"location":"https://github.com/ruishanteo/ip.git","repoName":"ip","organization":"ruishanteo","domainName":"github"},"branch":"master","displayName":"ruishanteo/ip[master]","outputFolderName":"ruishanteo_ip_master"},{"location":{"location":"https://github.com/lynnlow175/ip.git","repoName":"ip","organization":"lynnlow175","domainName":"github"},"branch":"master","displayName":"lynnlow175/ip[master]","outputFolderName":"lynnlow175_ip_master"},{"location":{"location":"https://github.com/kohkaijie/ip.git","repoName":"ip","organization":"kohkaijie","domainName":"github"},"branch":"master","displayName":"kohkaijie/ip[master]","outputFolderName":"kohkaijie_ip_master"},{"location":{"location":"https://github.com/CelestineTan03/ip.git","repoName":"ip","organization":"CelestineTan03","domainName":"github"},"branch":"master","displayName":"CelestineTan03/ip[master]","outputFolderName":"CelestineTan03_ip_master"},{"location":{"location":"https://github.com/PearlynnT/ip.git","repoName":"ip","organization":"PearlynnT","domainName":"github"},"branch":"master","displayName":"PearlynnT/ip[master]","outputFolderName":"PearlynnT_ip_master"},{"location":{"location":"https://github.com/Elijah5399/ip.git","repoName":"ip","organization":"Elijah5399","domainName":"github"},"branch":"master","displayName":"Elijah5399/ip[master]","outputFolderName":"Elijah5399_ip_master"},{"location":{"location":"https://github.com/nicleongyj/ip.git","repoName":"ip","organization":"nicleongyj","domainName":"github"},"branch":"master","displayName":"nicleongyj/ip[master]","outputFolderName":"nicleongyj_ip_master"},{"location":{"location":"https://github.com/AnnabelTing/ip.git","repoName":"ip","organization":"AnnabelTing","domainName":"github"},"branch":"master","displayName":"AnnabelTing/ip[master]","outputFolderName":"AnnabelTing_ip_master"},{"location":{"location":"https://github.com/jrchoo/ip.git","repoName":"ip","organization":"jrchoo","domainName":"github"},"branch":"master","displayName":"jrchoo/ip[master]","outputFolderName":"jrchoo_ip_master"},{"location":{"location":"https://github.com/wujy28/ip.git","repoName":"ip","organization":"wujy28","domainName":"github"},"branch":"master","displayName":"wujy28/ip[master]","outputFolderName":"wujy28_ip_master"},{"location":{"location":"https://github.com/Nauxe/ip.git","repoName":"ip","organization":"Nauxe","domainName":"github"},"branch":"master","displayName":"Nauxe/ip[master]","outputFolderName":"Nauxe_ip_master"},{"location":{"location":"https://github.com/yyyaohhh/ip.git","repoName":"ip","organization":"yyyaohhh","domainName":"github"},"branch":"master","displayName":"yyyaohhh/ip[master]","outputFolderName":"yyyaohhh_ip_master"},{"location":{"location":"https://github.com/xenosf/ip.git","repoName":"ip","organization":"xenosf","domainName":"github"},"branch":"master","displayName":"xenosf/ip[master]","outputFolderName":"xenosf_ip_master"},{"location":{"location":"https://github.com/WinSheng1/ip.git","repoName":"ip","organization":"WinSheng1","domainName":"github"},"branch":"master","displayName":"WinSheng1/ip[master]","outputFolderName":"WinSheng1_ip_master"},{"location":{"location":"https://github.com/nreHieW/ip.git","repoName":"ip","organization":"nreHieW","domainName":"github"},"branch":"master","displayName":"nreHieW/ip[master]","outputFolderName":"nreHieW_ip_master"},{"location":{"location":"https://github.com/peiran18/ip.git","repoName":"ip","organization":"peiran18","domainName":"github"},"branch":"master","displayName":"peiran18/ip[master]","outputFolderName":"peiran18_ip_master"},{"location":{"location":"https://github.com/cheeggered/ip.git","repoName":"ip","organization":"cheeggered","domainName":"github"},"branch":"master","displayName":"cheeggered/ip[master]","outputFolderName":"cheeggered_ip_master"},{"location":{"location":"https://github.com/GohTengFong/ip.git","repoName":"ip","organization":"GohTengFong","domainName":"github"},"branch":"master","displayName":"GohTengFong/ip[master]","outputFolderName":"GohTengFong_ip_master"},{"location":{"location":"https://github.com/jibtaf/ip.git","repoName":"ip","organization":"jibtaf","domainName":"github"},"branch":"master","displayName":"jibtaf/ip[master]","outputFolderName":"jibtaf_ip_master"},{"location":{"location":"https://github.com/bhnuka/ip.git","repoName":"ip","organization":"bhnuka","domainName":"github"},"branch":"master","displayName":"bhnuka/ip[master]","outputFolderName":"bhnuka_ip_master"},{"location":{"location":"https://github.com/laurenlim2112/ip.git","repoName":"ip","organization":"laurenlim2112","domainName":"github"},"branch":"master","displayName":"laurenlim2112/ip[master]","outputFolderName":"laurenlim2112_ip_master"},{"location":{"location":"https://github.com/howenc/ip.git","repoName":"ip","organization":"howenc","domainName":"github"},"branch":"master","displayName":"howenc/ip[master]","outputFolderName":"howenc_ip_master"},{"location":{"location":"https://github.com/Kokseng1/ip.git","repoName":"ip","organization":"Kokseng1","domainName":"github"},"branch":"master","displayName":"Kokseng1/ip[master]","outputFolderName":"Kokseng1_ip_master"},{"location":{"location":"https://github.com/yiwen101/ip.git","repoName":"ip","organization":"yiwen101","domainName":"github"},"branch":"master","displayName":"yiwen101/ip[master]","outputFolderName":"yiwen101_ip_master"},{"location":{"location":"https://github.com/Cikguseven/ip.git","repoName":"ip","organization":"Cikguseven","domainName":"github"},"branch":"master","displayName":"Cikguseven/ip[master]","outputFolderName":"Cikguseven_ip_master"},{"location":{"location":"https://github.com/javinchua/ip.git","repoName":"ip","organization":"javinchua","domainName":"github"},"branch":"master","displayName":"javinchua/ip[master]","outputFolderName":"javinchua_ip_master"},{"location":{"location":"https://github.com/frrrrry/ip.git","repoName":"ip","organization":"frrrrry","domainName":"github"},"branch":"master","displayName":"frrrrry/ip[master]","outputFolderName":"frrrrry_ip_master"},{"location":{"location":"https://github.com/YeoBohShin/ip.git","repoName":"ip","organization":"YeoBohShin","domainName":"github"},"branch":"master","displayName":"YeoBohShin/ip[master]","outputFolderName":"YeoBohShin_ip_master"},{"location":{"location":"https://github.com/yongning0310/ip.git","repoName":"ip","organization":"yongning0310","domainName":"github"},"branch":"master","displayName":"yongning0310/ip[master]","outputFolderName":"yongning0310_ip_master"},{"location":{"location":"https://github.com/SimWPEric/ip.git","repoName":"ip","organization":"SimWPEric","domainName":"github"},"branch":"master","displayName":"SimWPEric/ip[master]","outputFolderName":"SimWPEric_ip_master"},{"location":{"location":"https://github.com/sopa301/ip.git","repoName":"ip","organization":"sopa301","domainName":"github"},"branch":"master","displayName":"sopa301/ip[master]","outputFolderName":"sopa301_ip_master"},{"location":{"location":"https://github.com/nananakx-x/ip.git","repoName":"ip","organization":"nananakx-x","domainName":"github"},"branch":"master","displayName":"nananakx-x/ip[master]","outputFolderName":"nananakx-x_ip_master"},{"location":{"location":"https://github.com/LuoZYi/ip.git","repoName":"ip","organization":"LuoZYi","domainName":"github"},"branch":"master","displayName":"LuoZYi/ip[master]","outputFolderName":"LuoZYi_ip_master"},{"location":{"location":"https://github.com/LinWanLeii/ip.git","repoName":"ip","organization":"LinWanLeii","domainName":"github"},"branch":"master","displayName":"LinWanLeii/ip[master]","outputFolderName":"LinWanLeii_ip_master"},{"location":{"location":"https://github.com/mingyuanc/ip.git","repoName":"ip","organization":"mingyuanc","domainName":"github"},"branch":"master","displayName":"mingyuanc/ip[master]","outputFolderName":"mingyuanc_ip_master"},{"location":{"location":"https://github.com/chonguschonguschongus/ip.git","repoName":"ip","organization":"chonguschonguschongus","domainName":"github"},"branch":"master","displayName":"chonguschonguschongus/ip[master]","outputFolderName":"chonguschonguschongus_ip_master"},{"location":{"location":"https://github.com/yanghengtang/ip.git","repoName":"ip","organization":"yanghengtang","domainName":"github"},"branch":"master","displayName":"yanghengtang/ip[master]","outputFolderName":"yanghengtang_ip_master"},{"location":{"location":"https://github.com/victorpengmx/ip.git","repoName":"ip","organization":"victorpengmx","domainName":"github"},"branch":"master","displayName":"victorpengmx/ip[master]","outputFolderName":"victorpengmx_ip_master"},{"location":{"location":"https://github.com/kanna-1/ip.git","repoName":"ip","organization":"kanna-1","domainName":"github"},"branch":"master","displayName":"kanna-1/ip[master]","outputFolderName":"kanna-1_ip_master"},{"location":{"location":"https://github.com/ncduy0303/ip.git","repoName":"ip","organization":"ncduy0303","domainName":"github"},"branch":"master","displayName":"ncduy0303/ip[master]","outputFolderName":"ncduy0303_ip_master"},{"location":{"location":"https://github.com/jannnice/ip.git","repoName":"ip","organization":"jannnice","domainName":"github"},"branch":"master","displayName":"jannnice/ip[master]","outputFolderName":"jannnice_ip_master"},{"location":{"location":"https://github.com/itssisi/ip.git","repoName":"ip","organization":"itssisi","domainName":"github"},"branch":"master","displayName":"itssisi/ip[master]","outputFolderName":"itssisi_ip_master"},{"location":{"location":"https://github.com/freddychenyouren2/ip.git","repoName":"ip","organization":"freddychenyouren2","domainName":"github"},"branch":"master","displayName":"freddychenyouren2/ip[master]","outputFolderName":"freddychenyouren2_ip_master"},{"location":{"location":"https://github.com/Vanessamae23/ip.git","repoName":"ip","organization":"Vanessamae23","domainName":"github"},"branch":"master","displayName":"Vanessamae23/ip[master]","outputFolderName":"Vanessamae23_ip_master"},{"location":{"location":"https://github.com/cbj252/ip.git","repoName":"ip","organization":"cbj252","domainName":"github"},"branch":"master","displayName":"cbj252/ip[master]","outputFolderName":"cbj252_ip_master"},{"location":{"location":"https://github.com/freshcabbage123/ip.git","repoName":"ip","organization":"freshcabbage123","domainName":"github"},"branch":"master","displayName":"freshcabbage123/ip[master]","outputFolderName":"freshcabbage123_ip_master"},{"location":{"location":"https://github.com/thienmy0/ip.git","repoName":"ip","organization":"thienmy0","domainName":"github"},"branch":"master","displayName":"thienmy0/ip[master]","outputFolderName":"thienmy0_ip_master"},{"location":{"location":"https://github.com/glenngnng/ip.git","repoName":"ip","organization":"glenngnng","domainName":"github"},"branch":"master","displayName":"glenngnng/ip[master]","outputFolderName":"glenngnng_ip_master"},{"location":{"location":"https://github.com/Darren159/ip.git","repoName":"ip","organization":"Darren159","domainName":"github"},"branch":"master","displayName":"Darren159/ip[master]","outputFolderName":"Darren159_ip_master"},{"location":{"location":"https://github.com/J-hta-n/ip.git","repoName":"ip","organization":"J-hta-n","domainName":"github"},"branch":"master","displayName":"J-hta-n/ip[master]","outputFolderName":"J-hta-n_ip_master"},{"location":{"location":"https://github.com/evanyan13/ip.git","repoName":"ip","organization":"evanyan13","domainName":"github"},"branch":"master","displayName":"evanyan13/ip[master]","outputFolderName":"evanyan13_ip_master"},{"location":{"location":"https://github.com/tanveersingh10/ip.git","repoName":"ip","organization":"tanveersingh10","domainName":"github"},"branch":"master","displayName":"tanveersingh10/ip[master]","outputFolderName":"tanveersingh10_ip_master"},{"location":{"location":"https://github.com/neyapraveen/ip.git","repoName":"ip","organization":"neyapraveen","domainName":"github"},"branch":"master","displayName":"neyapraveen/ip[master]","outputFolderName":"neyapraveen_ip_master"},{"location":{"location":"https://github.com/weeweh/ip.git","repoName":"ip","organization":"weeweh","domainName":"github"},"branch":"master","displayName":"weeweh/ip[master]","outputFolderName":"weeweh_ip_master"},{"location":{"location":"https://github.com/HugeNoob/ip.git","repoName":"ip","organization":"HugeNoob","domainName":"github"},"branch":"master","displayName":"HugeNoob/ip[master]","outputFolderName":"HugeNoob_ip_master"},{"location":{"location":"https://github.com/wasjoe1/ip.git","repoName":"ip","organization":"wasjoe1","domainName":"github"},"branch":"master","displayName":"wasjoe1/ip[master]","outputFolderName":"wasjoe1_ip_master"},{"location":{"location":"https://github.com/s-kybound/ip.git","repoName":"ip","organization":"s-kybound","domainName":"github"},"branch":"master","displayName":"s-kybound/ip[master]","outputFolderName":"s-kybound_ip_master"},{"location":{"location":"https://github.com/Singa-pirate/ip.git","repoName":"ip","organization":"Singa-pirate","domainName":"github"},"branch":"master","displayName":"Singa-pirate/ip[master]","outputFolderName":"Singa-pirate_ip_master"},{"location":{"location":"https://github.com/wanghejin/ip.git","repoName":"ip","organization":"wanghejin","domainName":"github"},"branch":"master","displayName":"wanghejin/ip[master]","outputFolderName":"wanghejin_ip_master"},{"location":{"location":"https://github.com/yarnmengnus/ip.git","repoName":"ip","organization":"yarnmengnus","domainName":"github"},"branch":"master","displayName":"yarnmengnus/ip[master]","outputFolderName":"yarnmengnus_ip_master"},{"location":{"location":"https://github.com/Kurtyjlee/ip.git","repoName":"ip","organization":"Kurtyjlee","domainName":"github"},"branch":"master","displayName":"Kurtyjlee/ip[master]","outputFolderName":"Kurtyjlee_ip_master"},{"location":{"location":"https://github.com/jellywaiyan/ip.git","repoName":"ip","organization":"jellywaiyan","domainName":"github"},"branch":"master","displayName":"jellywaiyan/ip[master]","outputFolderName":"jellywaiyan_ip_master"},{"location":{"location":"https://github.com/ylyma/ip.git","repoName":"ip","organization":"ylyma","domainName":"github"},"branch":"master","displayName":"ylyma/ip[master]","outputFolderName":"ylyma_ip_master"},{"location":{"location":"https://github.com/revdrag/ip.git","repoName":"ip","organization":"revdrag","domainName":"github"},"branch":"master","displayName":"revdrag/ip[master]","outputFolderName":"revdrag_ip_master"},{"location":{"location":"https://github.com/vijay-shankaranand/ip.git","repoName":"ip","organization":"vijay-shankaranand","domainName":"github"},"branch":"master","displayName":"vijay-shankaranand/ip[master]","outputFolderName":"vijay-shankaranand_ip_master"},{"location":{"location":"https://github.com/lerxuann/ip.git","repoName":"ip","organization":"lerxuann","domainName":"github"},"branch":"master","displayName":"lerxuann/ip[master]","outputFolderName":"lerxuann_ip_master"},{"location":{"location":"https://github.com/yuxunn/ip.git","repoName":"ip","organization":"yuxunn","domainName":"github"},"branch":"master","displayName":"yuxunn/ip[master]","outputFolderName":"yuxunn_ip_master"},{"location":{"location":"https://github.com/zannloo/ip.git","repoName":"ip","organization":"zannloo","domainName":"github"},"branch":"master","displayName":"zannloo/ip[master]","outputFolderName":"zannloo_ip_master"},{"location":{"location":"https://github.com/AryanG01/ip.git","repoName":"ip","organization":"AryanG01","domainName":"github"},"branch":"master","displayName":"AryanG01/ip[master]","outputFolderName":"AryanG01_ip_master"},{"location":{"location":"https://github.com/oeggy03/ip.git","repoName":"ip","organization":"oeggy03","domainName":"github"},"branch":"master","displayName":"oeggy03/ip[master]","outputFolderName":"oeggy03_ip_master"},{"location":{"location":"https://github.com/jeffrey-jian/ip.git","repoName":"ip","organization":"jeffrey-jian","domainName":"github"},"branch":"master","displayName":"jeffrey-jian/ip[master]","outputFolderName":"jeffrey-jian_ip_master"},{"location":{"location":"https://github.com/nicholastng010601/ip.git","repoName":"ip","organization":"nicholastng010601","domainName":"github"},"branch":"master","displayName":"nicholastng010601/ip[master]","outputFolderName":"nicholastng010601_ip_master"},{"location":{"location":"https://github.com/Weiennn/ip.git","repoName":"ip","organization":"Weiennn","domainName":"github"},"branch":"master","displayName":"Weiennn/ip[master]","outputFolderName":"Weiennn_ip_master"},{"location":{"location":"https://github.com/tayruxin/ip.git","repoName":"ip","organization":"tayruxin","domainName":"github"},"branch":"master","displayName":"tayruxin/ip[master]","outputFolderName":"tayruxin_ip_master"},{"location":{"location":"https://github.com/xyT-T/ip.git","repoName":"ip","organization":"xyT-T","domainName":"github"},"branch":"master","displayName":"xyT-T/ip[master]","outputFolderName":"xyT-T_ip_master"},{"location":{"location":"https://github.com/lunaroddity/ip.git","repoName":"ip","organization":"lunaroddity","domainName":"github"},"branch":"master","displayName":"lunaroddity/ip[master]","outputFolderName":"lunaroddity_ip_master"},{"location":{"location":"https://github.com/nabonitasen/ip.git","repoName":"ip","organization":"nabonitasen","domainName":"github"},"branch":"master","displayName":"nabonitasen/ip[master]","outputFolderName":"nabonitasen_ip_master"},{"location":{"location":"https://github.com/inezkok/ip.git","repoName":"ip","organization":"inezkok","domainName":"github"},"branch":"master","displayName":"inezkok/ip[master]","outputFolderName":"inezkok_ip_master"},{"location":{"location":"https://github.com/nknguyenhc/ip.git","repoName":"ip","organization":"nknguyenhc","domainName":"github"},"branch":"master","displayName":"nknguyenhc/ip[master]","outputFolderName":"nknguyenhc_ip_master"},{"location":{"location":"https://github.com/keaganpzh/ip.git","repoName":"ip","organization":"keaganpzh","domainName":"github"},"branch":"master","displayName":"keaganpzh/ip[master]","outputFolderName":"keaganpzh_ip_master"},{"location":{"location":"https://github.com/lululwtv/ip.git","repoName":"ip","organization":"lululwtv","domainName":"github"},"branch":"master","displayName":"lululwtv/ip[master]","outputFolderName":"lululwtv_ip_master"},{"location":{"location":"https://github.com/hcs1203/ip.git","repoName":"ip","organization":"hcs1203","domainName":"github"},"branch":"master","displayName":"hcs1203/ip[master]","outputFolderName":"hcs1203_ip_master"},{"location":{"location":"https://github.com/migfoo02/ip.git","repoName":"ip","organization":"migfoo02","domainName":"github"},"branch":"master","displayName":"migfoo02/ip[master]","outputFolderName":"migfoo02_ip_master"},{"location":{"location":"https://github.com/papataco14/ip.git","repoName":"ip","organization":"papataco14","domainName":"github"},"branch":"master","displayName":"papataco14/ip[master]","outputFolderName":"papataco14_ip_master"},{"location":{"location":"https://github.com/coderhuang559/ip.git","repoName":"ip","organization":"coderhuang559","domainName":"github"},"branch":"master","displayName":"coderhuang559/ip[master]","outputFolderName":"coderhuang559_ip_master"},{"location":{"location":"https://github.com/craigtonlian/ip.git","repoName":"ip","organization":"craigtonlian","domainName":"github"},"branch":"master","displayName":"craigtonlian/ip[master]","outputFolderName":"craigtonlian_ip_master"},{"location":{"location":"https://github.com/adammangzijun/ip.git","repoName":"ip","organization":"adammangzijun","domainName":"github"},"branch":"master","displayName":"adammangzijun/ip[master]","outputFolderName":"adammangzijun_ip_master"},{"location":{"location":"https://github.com/AlainS87/ip.git","repoName":"ip","organization":"AlainS87","domainName":"github"},"branch":"master","displayName":"AlainS87/ip[master]","outputFolderName":"AlainS87_ip_master"},{"location":{"location":"https://github.com/tanyyyming/ip.git","repoName":"ip","organization":"tanyyyming","domainName":"github"},"branch":"master","displayName":"tanyyyming/ip[master]","outputFolderName":"tanyyyming_ip_master"},{"location":{"location":"https://github.com/Saezenn/ip.git","repoName":"ip","organization":"Saezenn","domainName":"github"},"branch":"master","displayName":"Saezenn/ip[master]","outputFolderName":"Saezenn_ip_master"},{"location":{"location":"https://github.com/kayabuttertoastt/ip.git","repoName":"ip","organization":"kayabuttertoastt","domainName":"github"},"branch":"master","displayName":"kayabuttertoastt/ip[master]","outputFolderName":"kayabuttertoastt_ip_master"},{"location":{"location":"https://github.com/limjunxian1/ip.git","repoName":"ip","organization":"limjunxian1","domainName":"github"},"branch":"master","displayName":"limjunxian1/ip[master]","outputFolderName":"limjunxian1_ip_master"},{"location":{"location":"https://github.com/andrechuakj/ip.git","repoName":"ip","organization":"andrechuakj","domainName":"github"},"branch":"master","displayName":"andrechuakj/ip[master]","outputFolderName":"andrechuakj_ip_master"},{"location":{"location":"https://github.com/kwangthiag/ip.git","repoName":"ip","organization":"kwangthiag","domainName":"github"},"branch":"master","displayName":"kwangthiag/ip[master]","outputFolderName":"kwangthiag_ip_master"},{"location":{"location":"https://github.com/ricketytoc/ip.git","repoName":"ip","organization":"ricketytoc","domainName":"github"},"branch":"master","displayName":"ricketytoc/ip[master]","outputFolderName":"ricketytoc_ip_master"},{"location":{"location":"https://github.com/applepiofmyeye/ip.git","repoName":"ip","organization":"applepiofmyeye","domainName":"github"},"branch":"master","displayName":"applepiofmyeye/ip[master]","outputFolderName":"applepiofmyeye_ip_master"},{"location":{"location":"https://github.com/nubnubyas/ip.git","repoName":"ip","organization":"nubnubyas","domainName":"github"},"branch":"master","displayName":"nubnubyas/ip[master]","outputFolderName":"nubnubyas_ip_master"},{"location":{"location":"https://github.com/WeeeHung/ip.git","repoName":"ip","organization":"WeeeHung","domainName":"github"},"branch":"master","displayName":"WeeeHung/ip[master]","outputFolderName":"WeeeHung_ip_master"},{"location":{"location":"https://github.com/Eola-Z/ip.git","repoName":"ip","organization":"Eola-Z","domainName":"github"},"branch":"master","displayName":"Eola-Z/ip[master]","outputFolderName":"Eola-Z_ip_master"},{"location":{"location":"https://github.com/jordankanghm/ip.git","repoName":"ip","organization":"jordankanghm","domainName":"github"},"branch":"master","displayName":"jordankanghm/ip[master]","outputFolderName":"jordankanghm_ip_master"},{"location":{"location":"https://github.com/zacwong2151/ip.git","repoName":"ip","organization":"zacwong2151","domainName":"github"},"branch":"master","displayName":"zacwong2151/ip[master]","outputFolderName":"zacwong2151_ip_master"},{"location":{"location":"https://github.com/m1oojv/ip.git","repoName":"ip","organization":"m1oojv","domainName":"github"},"branch":"master","displayName":"m1oojv/ip[master]","outputFolderName":"m1oojv_ip_master"},{"location":{"location":"https://github.com/JCSnap/ip.git","repoName":"ip","organization":"JCSnap","domainName":"github"},"branch":"master","displayName":"JCSnap/ip[master]","outputFolderName":"JCSnap_ip_master"},{"location":{"location":"https://github.com/Nid21cs/ip.git","repoName":"ip","organization":"Nid21cs","domainName":"github"},"branch":"master","displayName":"Nid21cs/ip[master]","outputFolderName":"Nid21cs_ip_master"},{"location":{"location":"https://github.com/mfjkri/ip.git","repoName":"ip","organization":"mfjkri","domainName":"github"},"branch":"master","displayName":"mfjkri/ip[master]","outputFolderName":"mfjkri_ip_master"},{"location":{"location":"https://github.com/Choonyan02/ip.git","repoName":"ip","organization":"Choonyan02","domainName":"github"},"branch":"master","displayName":"Choonyan02/ip[master]","outputFolderName":"Choonyan02_ip_master"},{"location":{"location":"https://github.com/rayyan35p/ip.git","repoName":"ip","organization":"rayyan35p","domainName":"github"},"branch":"master","displayName":"rayyan35p/ip[master]","outputFolderName":"rayyan35p_ip_master"},{"location":{"location":"https://github.com/dhruvir29/ip.git","repoName":"ip","organization":"dhruvir29","domainName":"github"},"branch":"master","displayName":"dhruvir29/ip[master]","outputFolderName":"dhruvir29_ip_master"},{"location":{"location":"https://github.com/Mohammed-Faizzzz/ip.git","repoName":"ip","organization":"Mohammed-Faizzzz","domainName":"github"},"branch":"master","displayName":"Mohammed-Faizzzz/ip[master]","outputFolderName":"Mohammed-Faizzzz_ip_master"},{"location":{"location":"https://github.com/ruo-x/ip.git","repoName":"ip","organization":"ruo-x","domainName":"github"},"branch":"master","displayName":"ruo-x/ip[master]","outputFolderName":"ruo-x_ip_master"},{"location":{"location":"https://github.com/DonovanJJ/ip.git","repoName":"ip","organization":"DonovanJJ","domainName":"github"},"branch":"master","displayName":"DonovanJJ/ip[master]","outputFolderName":"DonovanJJ_ip_master"},{"location":{"location":"https://github.com/kristayeo/ip.git","repoName":"ip","organization":"kristayeo","domainName":"github"},"branch":"master","displayName":"kristayeo/ip[master]","outputFolderName":"kristayeo_ip_master"},{"location":{"location":"https://github.com/ZD292/ip.git","repoName":"ip","organization":"ZD292","domainName":"github"},"branch":"master","displayName":"ZD292/ip[master]","outputFolderName":"ZD292_ip_master"},{"location":{"location":"https://github.com/jingjie88/ip.git","repoName":"ip","organization":"jingjie88","domainName":"github"},"branch":"master","displayName":"jingjie88/ip[master]","outputFolderName":"jingjie88_ip_master"},{"location":{"location":"https://github.com/iantsaii/ip.git","repoName":"ip","organization":"iantsaii","domainName":"github"},"branch":"master","displayName":"iantsaii/ip[master]","outputFolderName":"iantsaii_ip_master"},{"location":{"location":"https://github.com/jingting1412/ip.git","repoName":"ip","organization":"jingting1412","domainName":"github"},"branch":"master","displayName":"jingting1412/ip[master]","outputFolderName":"jingting1412_ip_master"},{"location":{"location":"https://github.com/wnchan/ip.git","repoName":"ip","organization":"wnchan","domainName":"github"},"branch":"master","displayName":"wnchan/ip[master]","outputFolderName":"wnchan_ip_master"},{"location":{"location":"https://github.com/jack1e0/ip.git","repoName":"ip","organization":"jack1e0","domainName":"github"},"branch":"master","displayName":"jack1e0/ip[master]","outputFolderName":"jack1e0_ip_master"},{"location":{"location":"https://github.com/mingyu-wan/ip.git","repoName":"ip","organization":"mingyu-wan","domainName":"github"},"branch":"master","displayName":"mingyu-wan/ip[master]","outputFolderName":"mingyu-wan_ip_master"},{"location":{"location":"https://github.com/nicolengk/ip.git","repoName":"ip","organization":"nicolengk","domainName":"github"},"branch":"master","displayName":"nicolengk/ip[master]","outputFolderName":"nicolengk_ip_master"},{"location":{"location":"https://github.com/cyaoxuan/ip.git","repoName":"ip","organization":"cyaoxuan","domainName":"github"},"branch":"master","displayName":"cyaoxuan/ip[master]","outputFolderName":"cyaoxuan_ip_master"},{"location":{"location":"https://github.com/sunzihan23/ip.git","repoName":"ip","organization":"sunzihan23","domainName":"github"},"branch":"master","displayName":"sunzihan23/ip[master]","outputFolderName":"sunzihan23_ip_master"},{"location":{"location":"https://github.com/Goh-Li-Ting/ip.git","repoName":"ip","organization":"Goh-Li-Ting","domainName":"github"},"branch":"master","displayName":"Goh-Li-Ting/ip[master]","outputFolderName":"Goh-Li-Ting_ip_master"},{"location":{"location":"https://github.com/wjayee/ip.git","repoName":"ip","organization":"wjayee","domainName":"github"},"branch":"master","displayName":"wjayee/ip[master]","outputFolderName":"wjayee_ip_master"},{"location":{"location":"https://github.com/fuyiqiao/ip.git","repoName":"ip","organization":"fuyiqiao","domainName":"github"},"branch":"master","displayName":"fuyiqiao/ip[master]","outputFolderName":"fuyiqiao_ip_master"},{"location":{"location":"https://github.com/GlendaChong/ip.git","repoName":"ip","organization":"GlendaChong","domainName":"github"},"branch":"master","displayName":"GlendaChong/ip[master]","outputFolderName":"GlendaChong_ip_master"},{"location":{"location":"https://github.com/hyc17003/ip.git","repoName":"ip","organization":"hyc17003","domainName":"github"},"branch":"master","displayName":"hyc17003/ip[master]","outputFolderName":"hyc17003_ip_master"},{"location":{"location":"https://github.com/spatuly/ip.git","repoName":"ip","organization":"spatuly","domainName":"github"},"branch":"master","displayName":"spatuly/ip[master]","outputFolderName":"spatuly_ip_master"},{"location":{"location":"https://github.com/tanteckfang/ip.git","repoName":"ip","organization":"tanteckfang","domainName":"github"},"branch":"master","displayName":"tanteckfang/ip[master]","outputFolderName":"tanteckfang_ip_master"},{"location":{"location":"https://github.com/Clin-lyx/ip.git","repoName":"ip","organization":"Clin-lyx","domainName":"github"},"branch":"master","displayName":"Clin-lyx/ip[master]","outputFolderName":"Clin-lyx_ip_master"},{"location":{"location":"https://github.com/lyuanww/ip.git","repoName":"ip","organization":"lyuanww","domainName":"github"},"branch":"master","displayName":"lyuanww/ip[master]","outputFolderName":"lyuanww_ip_master"},{"location":{"location":"https://github.com/LimJH2002/ip.git","repoName":"ip","organization":"LimJH2002","domainName":"github"},"branch":"master","displayName":"LimJH2002/ip[master]","outputFolderName":"LimJH2002_ip_master"},{"location":{"location":"https://github.com/LWZ19/ip.git","repoName":"ip","organization":"LWZ19","domainName":"github"},"branch":"master","displayName":"LWZ19/ip[master]","outputFolderName":"LWZ19_ip_master"},{"location":{"location":"https://github.com/Gavino3o/ip.git","repoName":"ip","organization":"Gavino3o","domainName":"github"},"branch":"master","displayName":"Gavino3o/ip[master]","outputFolderName":"Gavino3o_ip_master"},{"location":{"location":"https://github.com/suryanshkushwaha/ip.git","repoName":"ip","organization":"suryanshkushwaha","domainName":"github"},"branch":"master","displayName":"suryanshkushwaha/ip[master]","outputFolderName":"suryanshkushwaha_ip_master"},{"location":{"location":"https://github.com/JasonRay168/ip.git","repoName":"ip","organization":"JasonRay168","domainName":"github"},"branch":"master","displayName":"JasonRay168/ip[master]","outputFolderName":"JasonRay168_ip_master"},{"location":{"location":"https://github.com/jovkusuma/ip.git","repoName":"ip","organization":"jovkusuma","domainName":"github"},"branch":"master","displayName":"jovkusuma/ip[master]","outputFolderName":"jovkusuma_ip_master"},{"location":{"location":"https://github.com/Chrainx/ip.git","repoName":"ip","organization":"Chrainx","domainName":"github"},"branch":"master","displayName":"Chrainx/ip[master]","outputFolderName":"Chrainx_ip_master"},{"location":{"location":"https://github.com/Propene-Dan/ip.git","repoName":"ip","organization":"Propene-Dan","domainName":"github"},"branch":"master","displayName":"Propene-Dan/ip[master]","outputFolderName":"Propene-Dan_ip_master"},{"location":{"location":"https://github.com/Daphne789/ip.git","repoName":"ip","organization":"Daphne789","domainName":"github"},"branch":"master","displayName":"Daphne789/ip[master]","outputFolderName":"Daphne789_ip_master"},{"location":{"location":"https://github.com/ChuanXinNg/ip.git","repoName":"ip","organization":"ChuanXinNg","domainName":"github"},"branch":"master","displayName":"ChuanXinNg/ip[master]","outputFolderName":"ChuanXinNg_ip_master"},{"location":{"location":"https://github.com/LHeng1/ip.git","repoName":"ip","organization":"LHeng1","domainName":"github"},"branch":"master","displayName":"LHeng1/ip[master]","outputFolderName":"LHeng1_ip_master"},{"location":{"location":"https://github.com/wr1159/ip.git","repoName":"ip","organization":"wr1159","domainName":"github"},"branch":"master","displayName":"wr1159/ip[master]","outputFolderName":"wr1159_ip_master"},{"location":{"location":"https://github.com/wjacobw/ip.git","repoName":"ip","organization":"wjacobw","domainName":"github"},"branch":"master","displayName":"wjacobw/ip[master]","outputFolderName":"wjacobw_ip_master"},{"location":{"location":"https://github.com/tiongjjyi/ip.git","repoName":"ip","organization":"tiongjjyi","domainName":"github"},"branch":"master","displayName":"tiongjjyi/ip[master]","outputFolderName":"tiongjjyi_ip_master"},{"location":{"location":"https://github.com/longnguyentan/ip.git","repoName":"ip","organization":"longnguyentan","domainName":"github"},"branch":"master","displayName":"longnguyentan/ip[master]","outputFolderName":"longnguyentan_ip_master"},{"location":{"location":"https://github.com/proto-aiken-13/ip.git","repoName":"ip","organization":"proto-aiken-13","domainName":"github"},"branch":"master","displayName":"proto-aiken-13/ip[master]","outputFolderName":"proto-aiken-13_ip_master"},{"location":{"location":"https://github.com/junnengsoo/ip.git","repoName":"ip","organization":"junnengsoo","domainName":"github"},"branch":"master","displayName":"junnengsoo/ip[master]","outputFolderName":"junnengsoo_ip_master"},{"location":{"location":"https://github.com/yezkez10/ip.git","repoName":"ip","organization":"yezkez10","domainName":"github"},"branch":"master","displayName":"yezkez10/ip[master]","outputFolderName":"yezkez10_ip_master"},{"location":{"location":"https://github.com/jamesebond/ip.git","repoName":"ip","organization":"jamesebond","domainName":"github"},"branch":"master","displayName":"jamesebond/ip[master]","outputFolderName":"jamesebond_ip_master"},{"location":{"location":"https://github.com/alyssaongyx/ip.git","repoName":"ip","organization":"alyssaongyx","domainName":"github"},"branch":"master","displayName":"alyssaongyx/ip[master]","outputFolderName":"alyssaongyx_ip_master"},{"location":{"location":"https://github.com/Carlintyj/ip.git","repoName":"ip","organization":"Carlintyj","domainName":"github"},"branch":"master","displayName":"Carlintyj/ip[master]","outputFolderName":"Carlintyj_ip_master"},{"location":{"location":"https://github.com/ruth-lim/ip.git","repoName":"ip","organization":"ruth-lim","domainName":"github"},"branch":"master","displayName":"ruth-lim/ip[master]","outputFolderName":"ruth-lim_ip_master"},{"location":{"location":"https://github.com/licongshen12/ip.git","repoName":"ip","organization":"licongshen12","domainName":"github"},"branch":"master","displayName":"licongshen12/ip[master]","outputFolderName":"licongshen12_ip_master"},{"location":{"location":"https://github.com/thaddeusong/ip.git","repoName":"ip","organization":"thaddeusong","domainName":"github"},"branch":"master","displayName":"thaddeusong/ip[master]","outputFolderName":"thaddeusong_ip_master"},{"location":{"location":"https://github.com/LordSaumya/ip.git","repoName":"ip","organization":"LordSaumya","domainName":"github"},"branch":"master","displayName":"LordSaumya/ip[master]","outputFolderName":"LordSaumya_ip_master"},{"location":{"location":"https://github.com/Kevin-Liusx/ip.git","repoName":"ip","organization":"Kevin-Liusx","domainName":"github"},"branch":"master","displayName":"Kevin-Liusx/ip[master]","outputFolderName":"Kevin-Liusx_ip_master"},{"location":{"location":"https://github.com/Ken-Lai/ip.git","repoName":"ip","organization":"Ken-Lai","domainName":"github"},"branch":"master","displayName":"Ken-Lai/ip[master]","outputFolderName":"Ken-Lai_ip_master"},{"location":{"location":"https://github.com/KumChaiYin/ip.git","repoName":"ip","organization":"KumChaiYin","domainName":"github"},"branch":"master","displayName":"KumChaiYin/ip[master]","outputFolderName":"KumChaiYin_ip_master"},{"location":{"location":"https://github.com/pzl111/ip.git","repoName":"ip","organization":"pzl111","domainName":"github"},"branch":"master","displayName":"pzl111/ip[master]","outputFolderName":"pzl111_ip_master"},{"location":{"location":"https://github.com/alientian/ip.git","repoName":"ip","organization":"alientian","domainName":"github"},"branch":"master","displayName":"alientian/ip[master]","outputFolderName":"alientian_ip_master"},{"location":{"location":"https://github.com/eyelessrhyme7/ip.git","repoName":"ip","organization":"eyelessrhyme7","domainName":"github"},"branch":"master","displayName":"eyelessrhyme7/ip[master]","outputFolderName":"eyelessrhyme7_ip_master"},{"location":{"location":"https://github.com/AprupKale/ip.git","repoName":"ip","organization":"AprupKale","domainName":"github"},"branch":"master","displayName":"AprupKale/ip[master]","outputFolderName":"AprupKale_ip_master"},{"location":{"location":"https://github.com/kimshitong/ip.git","repoName":"ip","organization":"kimshitong","domainName":"github"},"branch":"master","displayName":"kimshitong/ip[master]","outputFolderName":"kimshitong_ip_master"},{"location":{"location":"https://github.com/Bryan-Goh/ip.git","repoName":"ip","organization":"Bryan-Goh","domainName":"github"},"branch":"master","displayName":"Bryan-Goh/ip[master]","outputFolderName":"Bryan-Goh_ip_master"},{"location":{"location":"https://github.com/tiif/ip.git","repoName":"ip","organization":"tiif","domainName":"github"},"branch":"master","displayName":"tiif/ip[master]","outputFolderName":"tiif_ip_master"},{"location":{"location":"https://github.com/angkyakdifp/ip.git","repoName":"ip","organization":"angkyakdifp","domainName":"github"},"branch":"master","displayName":"angkyakdifp/ip[master]","outputFolderName":"angkyakdifp_ip_master"},{"location":{"location":"https://github.com/Chen-Kuei/ip.git","repoName":"ip","organization":"Chen-Kuei","domainName":"github"},"branch":"master","displayName":"Chen-Kuei/ip[master]","outputFolderName":"Chen-Kuei_ip_master"},{"location":{"location":"https://github.com/SinhaVedant/ip.git","repoName":"ip","organization":"SinhaVedant","domainName":"github"},"branch":"master","displayName":"SinhaVedant/ip[master]","outputFolderName":"SinhaVedant_ip_master"},{"location":{"location":"https://github.com/D-Limiter/ip.git","repoName":"ip","organization":"D-Limiter","domainName":"github"},"branch":"master","displayName":"D-Limiter/ip[master]","outputFolderName":"D-Limiter_ip_master"},{"location":{"location":"https://github.com/larrywang0701/ip.git","repoName":"ip","organization":"larrywang0701","domainName":"github"},"branch":"master","displayName":"larrywang0701/ip[master]","outputFolderName":"larrywang0701_ip_master"},{"location":{"location":"https://github.com/Song-Mengfei/ip.git","repoName":"ip","organization":"Song-Mengfei","domainName":"github"},"branch":"master","displayName":"Song-Mengfei/ip[master]","outputFolderName":"Song-Mengfei_ip_master"},{"location":{"location":"https://github.com/ChangruHenryQian/ip.git","repoName":"ip","organization":"ChangruHenryQian","domainName":"github"},"branch":"master","displayName":"ChangruHenryQian/ip[master]","outputFolderName":"ChangruHenryQian_ip_master"},{"location":{"location":"https://github.com/ketweeen/ip.git","repoName":"ip","organization":"ketweeen","domainName":"github"},"branch":"master","displayName":"ketweeen/ip[master]","outputFolderName":"ketweeen_ip_master"},{"location":{"location":"https://github.com/RSXIX/ip.git","repoName":"ip","organization":"RSXIX","domainName":"github"},"branch":"master","displayName":"RSXIX/ip[master]","outputFolderName":"RSXIX_ip_master"},{"location":{"location":"https://github.com/songgthu/ip.git","repoName":"ip","organization":"songgthu","domainName":"github"},"branch":"master","displayName":"songgthu/ip[master]","outputFolderName":"songgthu_ip_master"},{"location":{"location":"https://github.com/maj0-0/ip.git","repoName":"ip","organization":"maj0-0","domainName":"github"},"branch":"master","displayName":"maj0-0/ip[master]","outputFolderName":"maj0-0_ip_master"},{"location":{"location":"https://github.com/tiongMax/ip.git","repoName":"ip","organization":"tiongMax","domainName":"github"},"branch":"master","displayName":"tiongMax/ip[master]","outputFolderName":"tiongMax_ip_master"},{"location":{"location":"https://github.com/A1WAYSD/ip.git","repoName":"ip","organization":"A1WAYSD","domainName":"github"},"branch":"master","displayName":"A1WAYSD/ip[master]","outputFolderName":"A1WAYSD_ip_master"},{"location":{"location":"https://github.com/hjoneweek/ip.git","repoName":"ip","organization":"hjoneweek","domainName":"github"},"branch":"master","displayName":"hjoneweek/ip[master]","outputFolderName":"hjoneweek_ip_master"},{"location":{"location":"https://github.com/itsNatTan/ip.git","repoName":"ip","organization":"itsNatTan","domainName":"github"},"branch":"master","displayName":"itsNatTan/ip[master]","outputFolderName":"itsNatTan_ip_master"},{"location":{"location":"https://github.com/AustinHuang1203/ip.git","repoName":"ip","organization":"AustinHuang1203","domainName":"github"},"branch":"master","displayName":"AustinHuang1203/ip[master]","outputFolderName":"AustinHuang1203_ip_master"},{"location":{"location":"https://github.com/WangCheng0116/ip.git","repoName":"ip","organization":"WangCheng0116","domainName":"github"},"branch":"master","displayName":"WangCheng0116/ip[master]","outputFolderName":"WangCheng0116_ip_master"},{"location":{"location":"https://github.com/Tim-Siu/ip.git","repoName":"ip","organization":"Tim-Siu","domainName":"github"},"branch":"master","displayName":"Tim-Siu/ip[master]","outputFolderName":"Tim-Siu_ip_master"},{"location":{"location":"https://github.com/newway1814/ip.git","repoName":"ip","organization":"newway1814","domainName":"github"},"branch":"master","displayName":"newway1814/ip[master]","outputFolderName":"newway1814_ip_master"},{"location":{"location":"https://github.com/li-rongzhi/ip.git","repoName":"ip","organization":"li-rongzhi","domainName":"github"},"branch":"master","displayName":"li-rongzhi/ip[master]","outputFolderName":"li-rongzhi_ip_master"},{"location":{"location":"https://github.com/adhigop13/ip.git","repoName":"ip","organization":"adhigop13","domainName":"github"},"branch":"master","displayName":"adhigop13/ip[master]","outputFolderName":"adhigop13_ip_master"},{"location":{"location":"https://github.com/MadLamprey/ip.git","repoName":"ip","organization":"MadLamprey","domainName":"github"},"branch":"master","displayName":"MadLamprey/ip[master]","outputFolderName":"MadLamprey_ip_master"}],"errorSet":[],"sinceDate":"2023-08-18","untilDate":"2023-09-26","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":"075d34d8f5","reportGeneratedTime":"Tue Sep 26 22:06:07 2023 UTC+08:00","reportGenerationTime":" 3 minute(s) 0.99 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 iP Code Dashboard","repos":[{"location":{"location":"https://github.com/remuslum/ip.git","repoName":"ip","organization":"remuslum","domainName":"github"},"branch":"master","displayName":"remuslum/ip[master]","outputFolderName":"remuslum_ip_master"},{"location":{"location":"https://github.com/elhy1999/ip.git","repoName":"ip","organization":"elhy1999","domainName":"github"},"branch":"master","displayName":"elhy1999/ip[master]","outputFolderName":"elhy1999_ip_master"},{"location":{"location":"https://github.com/XihuaZ/ip.git","repoName":"ip","organization":"XihuaZ","domainName":"github"},"branch":"master","displayName":"XihuaZ/ip[master]","outputFolderName":"XihuaZ_ip_master"},{"location":{"location":"https://github.com/bwangpj/ip.git","repoName":"ip","organization":"bwangpj","domainName":"github"},"branch":"master","displayName":"bwangpj/ip[master]","outputFolderName":"bwangpj_ip_master"},{"location":{"location":"https://github.com/shuenj/ip.git","repoName":"ip","organization":"shuenj","domainName":"github"},"branch":"master","displayName":"shuenj/ip[master]","outputFolderName":"shuenj_ip_master"},{"location":{"location":"https://github.com/SungMatt/ip.git","repoName":"ip","organization":"SungMatt","domainName":"github"},"branch":"master","displayName":"SungMatt/ip[master]","outputFolderName":"SungMatt_ip_master"},{"location":{"location":"https://github.com/junhonglow/ip.git","repoName":"ip","organization":"junhonglow","domainName":"github"},"branch":"master","displayName":"junhonglow/ip[master]","outputFolderName":"junhonglow_ip_master"},{"location":{"location":"https://github.com/xavierpok/ip.git","repoName":"ip","organization":"xavierpok","domainName":"github"},"branch":"master","displayName":"xavierpok/ip[master]","outputFolderName":"xavierpok_ip_master"},{"location":{"location":"https://github.com/marcellaantania/ip.git","repoName":"ip","organization":"marcellaantania","domainName":"github"},"branch":"master","displayName":"marcellaantania/ip[master]","outputFolderName":"marcellaantania_ip_master"},{"location":{"location":"https://github.com/starrylight99/ip.git","repoName":"ip","organization":"starrylight99","domainName":"github"},"branch":"master","displayName":"starrylight99/ip[master]","outputFolderName":"starrylight99_ip_master"},{"location":{"location":"https://github.com/leezhanpeng/ip.git","repoName":"ip","organization":"leezhanpeng","domainName":"github"},"branch":"master","displayName":"leezhanpeng/ip[master]","outputFolderName":"leezhanpeng_ip_master"},{"location":{"location":"https://github.com/sheryew/ip.git","repoName":"ip","organization":"sheryew","domainName":"github"},"branch":"master","displayName":"sheryew/ip[master]","outputFolderName":"sheryew_ip_master"},{"location":{"location":"https://github.com/lihongguang00/ip.git","repoName":"ip","organization":"lihongguang00","domainName":"github"},"branch":"master","displayName":"lihongguang00/ip[master]","outputFolderName":"lihongguang00_ip_master"},{"location":{"location":"https://github.com/nicrandomlee/ip.git","repoName":"ip","organization":"nicrandomlee","domainName":"github"},"branch":"master","displayName":"nicrandomlee/ip[master]","outputFolderName":"nicrandomlee_ip_master"},{"location":{"location":"https://github.com/LuahJunYang/ip.git","repoName":"ip","organization":"LuahJunYang","domainName":"github"},"branch":"master","displayName":"LuahJunYang/ip[master]","outputFolderName":"LuahJunYang_ip_master"},{"location":{"location":"https://github.com/s-peiran/ip.git","repoName":"ip","organization":"s-peiran","domainName":"github"},"branch":"master","displayName":"s-peiran/ip[master]","outputFolderName":"s-peiran_ip_master"},{"location":{"location":"https://github.com/aarontxz/ip.git","repoName":"ip","organization":"aarontxz","domainName":"github"},"branch":"master","displayName":"aarontxz/ip[master]","outputFolderName":"aarontxz_ip_master"},{"location":{"location":"https://github.com/chiayunrong/ip.git","repoName":"ip","organization":"chiayunrong","domainName":"github"},"branch":"master","displayName":"chiayunrong/ip[master]","outputFolderName":"chiayunrong_ip_master"},{"location":{"location":"https://github.com/nixonwidjaja/ip.git","repoName":"ip","organization":"nixonwidjaja","domainName":"github"},"branch":"master","displayName":"nixonwidjaja/ip[master]","outputFolderName":"nixonwidjaja_ip_master"},{"location":{"location":"https://github.com/imkwokyong/ip.git","repoName":"ip","organization":"imkwokyong","domainName":"github"},"branch":"master","displayName":"imkwokyong/ip[master]","outputFolderName":"imkwokyong_ip_master"},{"location":{"location":"https://github.com/mamayuan/ip.git","repoName":"ip","organization":"mamayuan","domainName":"github"},"branch":"master","displayName":"mamayuan/ip[master]","outputFolderName":"mamayuan_ip_master"},{"location":{"location":"https://github.com/geoffong11/ip.git","repoName":"ip","organization":"geoffong11","domainName":"github"},"branch":"master","displayName":"geoffong11/ip[master]","outputFolderName":"geoffong11_ip_master"},{"location":{"location":"https://github.com/vivienherq/ip.git","repoName":"ip","organization":"vivienherq","domainName":"github"},"branch":"master","displayName":"vivienherq/ip[master]","outputFolderName":"vivienherq_ip_master"},{"location":{"location":"https://github.com/johnnythesnake12/ip.git","repoName":"ip","organization":"johnnythesnake12","domainName":"github"},"branch":"master","displayName":"johnnythesnake12/ip[master]","outputFolderName":"johnnythesnake12_ip_master"},{"location":{"location":"https://github.com/Cloud7050/ip.git","repoName":"ip","organization":"Cloud7050","domainName":"github"},"branch":"master","displayName":"Cloud7050/ip[master]","outputFolderName":"Cloud7050_ip_master"},{"location":{"location":"https://github.com/jonyeokj/ip.git","repoName":"ip","organization":"jonyeokj","domainName":"github"},"branch":"master","displayName":"jonyeokj/ip[master]","outputFolderName":"jonyeokj_ip_master"},{"location":{"location":"https://github.com/lipwei1808/ip.git","repoName":"ip","organization":"lipwei1808","domainName":"github"},"branch":"master","displayName":"lipwei1808/ip[master]","outputFolderName":"lipwei1808_ip_master"},{"location":{"location":"https://github.com/zhanyang01/ip.git","repoName":"ip","organization":"zhanyang01","domainName":"github"},"branch":"master","displayName":"zhanyang01/ip[master]","outputFolderName":"zhanyang01_ip_master"},{"location":{"location":"https://github.com/EricXiong420/ip.git","repoName":"ip","organization":"EricXiong420","domainName":"github"},"branch":"master","displayName":"EricXiong420/ip[master]","outputFolderName":"EricXiong420_ip_master"},{"location":{"location":"https://github.com/sp4ce-cowboy/ip.git","repoName":"ip","organization":"sp4ce-cowboy","domainName":"github"},"branch":"master","displayName":"sp4ce-cowboy/ip[master]","outputFolderName":"sp4ce-cowboy_ip_master"},{"location":{"location":"https://github.com/ktzy0305/ip.git","repoName":"ip","organization":"ktzy0305","domainName":"github"},"branch":"master","displayName":"ktzy0305/ip[master]","outputFolderName":"ktzy0305_ip_master"},{"location":{"location":"https://github.com/dom-buri/ip.git","repoName":"ip","organization":"dom-buri","domainName":"github"},"branch":"master","displayName":"dom-buri/ip[master]","outputFolderName":"dom-buri_ip_master"},{"location":{"location":"https://github.com/rayshawntan/ip.git","repoName":"ip","organization":"rayshawntan","domainName":"github"},"branch":"master","displayName":"rayshawntan/ip[master]","outputFolderName":"rayshawntan_ip_master"},{"location":{"location":"https://github.com/Seonlo99/ip.git","repoName":"ip","organization":"Seonlo99","domainName":"github"},"branch":"master","displayName":"Seonlo99/ip[master]","outputFolderName":"Seonlo99_ip_master"},{"location":{"location":"https://github.com/woojiahao/ip.git","repoName":"ip","organization":"woojiahao","domainName":"github"},"branch":"master","displayName":"woojiahao/ip[master]","outputFolderName":"woojiahao_ip_master"},{"location":{"location":"https://github.com/Angelyxx/ip.git","repoName":"ip","organization":"Angelyxx","domainName":"github"},"branch":"master","displayName":"Angelyxx/ip[master]","outputFolderName":"Angelyxx_ip_master"},{"location":{"location":"https://github.com/jamz903/ip.git","repoName":"ip","organization":"jamz903","domainName":"github"},"branch":"master","displayName":"jamz903/ip[master]","outputFolderName":"jamz903_ip_master"},{"location":{"location":"https://github.com/Fallman2/ip.git","repoName":"ip","organization":"Fallman2","domainName":"github"},"branch":"master","displayName":"Fallman2/ip[master]","outputFolderName":"Fallman2_ip_master"},{"location":{"location":"https://github.com/jacobcuison/ip.git","repoName":"ip","organization":"jacobcuison","domainName":"github"},"branch":"master","displayName":"jacobcuison/ip[master]","outputFolderName":"jacobcuison_ip_master"},{"location":{"location":"https://github.com/kenvynKwek/ip.git","repoName":"ip","organization":"kenvynKwek","domainName":"github"},"branch":"master","displayName":"kenvynKwek/ip[master]","outputFolderName":"kenvynKwek_ip_master"},{"location":{"location":"https://github.com/kokrui/ip.git","repoName":"ip","organization":"kokrui","domainName":"github"},"branch":"master","displayName":"kokrui/ip[master]","outputFolderName":"kokrui_ip_master"},{"location":{"location":"https://github.com/ncmathan/ip.git","repoName":"ip","organization":"ncmathan","domainName":"github"},"branch":"master","displayName":"ncmathan/ip[master]","outputFolderName":"ncmathan_ip_master"},{"location":{"location":"https://github.com/xCOLOURx/ip.git","repoName":"ip","organization":"xCOLOURx","domainName":"github"},"branch":"master","displayName":"xCOLOURx/ip[master]","outputFolderName":"xCOLOURx_ip_master"},{"location":{"location":"https://github.com/zhyuhan/ip.git","repoName":"ip","organization":"zhyuhan","domainName":"github"},"branch":"master","displayName":"zhyuhan/ip[master]","outputFolderName":"zhyuhan_ip_master"},{"location":{"location":"https://github.com/chuababyy/ip.git","repoName":"ip","organization":"chuababyy","domainName":"github"},"branch":"master","displayName":"chuababyy/ip[master]","outputFolderName":"chuababyy_ip_master"},{"location":{"location":"https://github.com/rocketninja7/ip.git","repoName":"ip","organization":"rocketninja7","domainName":"github"},"branch":"master","displayName":"rocketninja7/ip[master]","outputFolderName":"rocketninja7_ip_master"},{"location":{"location":"https://github.com/marquestye/ip.git","repoName":"ip","organization":"marquestye","domainName":"github"},"branch":"master","displayName":"marquestye/ip[master]","outputFolderName":"marquestye_ip_master"},{"location":{"location":"https://github.com/ruiyangzh/ip.git","repoName":"ip","organization":"ruiyangzh","domainName":"github"},"branch":"master","displayName":"ruiyangzh/ip[master]","outputFolderName":"ruiyangzh_ip_master"},{"location":{"location":"https://github.com/derekjxtan/ip.git","repoName":"ip","organization":"derekjxtan","domainName":"github"},"branch":"master","displayName":"derekjxtan/ip[master]","outputFolderName":"derekjxtan_ip_master"},{"location":{"location":"https://github.com/mounilsankar/ip.git","repoName":"ip","organization":"mounilsankar","domainName":"github"},"branch":"master","displayName":"mounilsankar/ip[master]","outputFolderName":"mounilsankar_ip_master"},{"location":{"location":"https://github.com/wj331/ip.git","repoName":"ip","organization":"wj331","domainName":"github"},"branch":"master","displayName":"wj331/ip[master]","outputFolderName":"wj331_ip_master"},{"location":{"location":"https://github.com/JasonLCY-Temp/ip.git","repoName":"ip","organization":"JasonLCY-Temp","domainName":"github"},"branch":"master","displayName":"JasonLCY-Temp/ip[master]","outputFolderName":"JasonLCY-Temp_ip_master"},{"location":{"location":"https://github.com/lawruixi/ip.git","repoName":"ip","organization":"lawruixi","domainName":"github"},"branch":"master","displayName":"lawruixi/ip[master]","outputFolderName":"lawruixi_ip_master"},{"location":{"location":"https://github.com/wxwern/ip.git","repoName":"ip","organization":"wxwern","domainName":"github"},"branch":"master","displayName":"wxwern/ip[master]","outputFolderName":"wxwern_ip_master"},{"location":{"location":"https://github.com/zekone/ip.git","repoName":"ip","organization":"zekone","domainName":"github"},"branch":"master","displayName":"zekone/ip[master]","outputFolderName":"zekone_ip_master"},{"location":{"location":"https://github.com/wamps-jp/ip.git","repoName":"ip","organization":"wamps-jp","domainName":"github"},"branch":"master","displayName":"wamps-jp/ip[master]","outputFolderName":"wamps-jp_ip_master"},{"location":{"location":"https://github.com/saltedfishxx/ip.git","repoName":"ip","organization":"saltedfishxx","domainName":"github"},"branch":"master","displayName":"saltedfishxx/ip[master]","outputFolderName":"saltedfishxx_ip_master"},{"location":{"location":"https://github.com/winson8222/ip.git","repoName":"ip","organization":"winson8222","domainName":"github"},"branch":"master","displayName":"winson8222/ip[master]","outputFolderName":"winson8222_ip_master"},{"location":{"location":"https://github.com/brandon-nam/ip.git","repoName":"ip","organization":"brandon-nam","domainName":"github"},"branch":"master","displayName":"brandon-nam/ip[master]","outputFolderName":"brandon-nam_ip_master"},{"location":{"location":"https://github.com/p-xp/ip.git","repoName":"ip","organization":"p-xp","domainName":"github"},"branch":"master","displayName":"p-xp/ip[master]","outputFolderName":"p-xp_ip_master"},{"location":{"location":"https://github.com/WeeMingQing/ip.git","repoName":"ip","organization":"WeeMingQing","domainName":"github"},"branch":"master","displayName":"WeeMingQing/ip[master]","outputFolderName":"WeeMingQing_ip_master"},{"location":{"location":"https://github.com/ScarletBlanks/ip.git","repoName":"ip","organization":"ScarletBlanks","domainName":"github"},"branch":"master","displayName":"ScarletBlanks/ip[master]","outputFolderName":"ScarletBlanks_ip_master"},{"location":{"location":"https://github.com/seraphimstreets/ip.git","repoName":"ip","organization":"seraphimstreets","domainName":"github"},"branch":"master","displayName":"seraphimstreets/ip[master]","outputFolderName":"seraphimstreets_ip_master"},{"location":{"location":"https://github.com/devanshubisht/ip.git","repoName":"ip","organization":"devanshubisht","domainName":"github"},"branch":"master","displayName":"devanshubisht/ip[master]","outputFolderName":"devanshubisht_ip_master"},{"location":{"location":"https://github.com/Zjinnnn/ip.git","repoName":"ip","organization":"Zjinnnn","domainName":"github"},"branch":"master","displayName":"Zjinnnn/ip[master]","outputFolderName":"Zjinnnn_ip_master"},{"location":{"location":"https://github.com/brendanneojw/ip.git","repoName":"ip","organization":"brendanneojw","domainName":"github"},"branch":"master","displayName":"brendanneojw/ip[master]","outputFolderName":"brendanneojw_ip_master"},{"location":{"location":"https://github.com/aexolate/ip.git","repoName":"ip","organization":"aexolate","domainName":"github"},"branch":"master","displayName":"aexolate/ip[master]","outputFolderName":"aexolate_ip_master"},{"location":{"location":"https://github.com/techjay-c/ip.git","repoName":"ip","organization":"techjay-c","domainName":"github"},"branch":"master","displayName":"techjay-c/ip[master]","outputFolderName":"techjay-c_ip_master"},{"location":{"location":"https://github.com/SynapseProgramming/ip.git","repoName":"ip","organization":"SynapseProgramming","domainName":"github"},"branch":"master","displayName":"SynapseProgramming/ip[master]","outputFolderName":"SynapseProgramming_ip_master"},{"location":{"location":"https://github.com/TyrusLye/ip.git","repoName":"ip","organization":"TyrusLye","domainName":"github"},"branch":"master","displayName":"TyrusLye/ip[master]","outputFolderName":"TyrusLye_ip_master"},{"location":{"location":"https://github.com/RB9823/ip.git","repoName":"ip","organization":"RB9823","domainName":"github"},"branch":"master","displayName":"RB9823/ip[master]","outputFolderName":"RB9823_ip_master"},{"location":{"location":"https://github.com/jean-cq/ip.git","repoName":"ip","organization":"jean-cq","domainName":"github"},"branch":"master","displayName":"jean-cq/ip[master]","outputFolderName":"jean-cq_ip_master"},{"location":{"location":"https://github.com/Bearypop/ip.git","repoName":"ip","organization":"Bearypop","domainName":"github"},"branch":"master","displayName":"Bearypop/ip[master]","outputFolderName":"Bearypop_ip_master"},{"location":{"location":"https://github.com/andytoh1/ip.git","repoName":"ip","organization":"andytoh1","domainName":"github"},"branch":"master","displayName":"andytoh1/ip[master]","outputFolderName":"andytoh1_ip_master"},{"location":{"location":"https://github.com/siqirua/ip.git","repoName":"ip","organization":"siqirua","domainName":"github"},"branch":"master","displayName":"siqirua/ip[master]","outputFolderName":"siqirua_ip_master"},{"location":{"location":"https://github.com/amosting/ip.git","repoName":"ip","organization":"amosting","domainName":"github"},"branch":"master","displayName":"amosting/ip[master]","outputFolderName":"amosting_ip_master"},{"location":{"location":"https://github.com/JizhuoChen/ip.git","repoName":"ip","organization":"JizhuoChen","domainName":"github"},"branch":"master","displayName":"JizhuoChen/ip[master]","outputFolderName":"JizhuoChen_ip_master"},{"location":{"location":"https://github.com/Tang-Moyan/ip.git","repoName":"ip","organization":"Tang-Moyan","domainName":"github"},"branch":"master","displayName":"Tang-Moyan/ip[master]","outputFolderName":"Tang-Moyan_ip_master"},{"location":{"location":"https://github.com/aliciamichellew/ip.git","repoName":"ip","organization":"aliciamichellew","domainName":"github"},"branch":"master","displayName":"aliciamichellew/ip[master]","outputFolderName":"aliciamichellew_ip_master"},{"location":{"location":"https://github.com/KamiliArsyad/ip.git","repoName":"ip","organization":"KamiliArsyad","domainName":"github"},"branch":"master","displayName":"KamiliArsyad/ip[master]","outputFolderName":"KamiliArsyad_ip_master"},{"location":{"location":"https://github.com/dishenggg/ip.git","repoName":"ip","organization":"dishenggg","domainName":"github"},"branch":"master","displayName":"dishenggg/ip[master]","outputFolderName":"dishenggg_ip_master"},{"location":{"location":"https://github.com/Nixx162/ip.git","repoName":"ip","organization":"Nixx162","domainName":"github"},"branch":"master","displayName":"Nixx162/ip[master]","outputFolderName":"Nixx162_ip_master"},{"location":{"location":"https://github.com/Leb14/ip.git","repoName":"ip","organization":"Leb14","domainName":"github"},"branch":"master","displayName":"Leb14/ip[master]","outputFolderName":"Leb14_ip_master"},{"location":{"location":"https://github.com/Heran9/ip.git","repoName":"ip","organization":"Heran9","domainName":"github"},"branch":"master","displayName":"Heran9/ip[master]","outputFolderName":"Heran9_ip_master"},{"location":{"location":"https://github.com/FerdiHS/ip.git","repoName":"ip","organization":"FerdiHS","domainName":"github"},"branch":"master","displayName":"FerdiHS/ip[master]","outputFolderName":"FerdiHS_ip_master"},{"location":{"location":"https://github.com/StevenLiudw/ip.git","repoName":"ip","organization":"StevenLiudw","domainName":"github"},"branch":"master","displayName":"StevenLiudw/ip[master]","outputFolderName":"StevenLiudw_ip_master"},{"location":{"location":"https://github.com/InfiBeyond/ip.git","repoName":"ip","organization":"InfiBeyond","domainName":"github"},"branch":"master","displayName":"InfiBeyond/ip[master]","outputFolderName":"InfiBeyond_ip_master"},{"location":{"location":"https://github.com/s0ngyang/ip.git","repoName":"ip","organization":"s0ngyang","domainName":"github"},"branch":"master","displayName":"s0ngyang/ip[master]","outputFolderName":"s0ngyang_ip_master"},{"location":{"location":"https://github.com/ivyy-poison/ip.git","repoName":"ip","organization":"ivyy-poison","domainName":"github"},"branch":"master","displayName":"ivyy-poison/ip[master]","outputFolderName":"ivyy-poison_ip_master"},{"location":{"location":"https://github.com/yytan25/ip.git","repoName":"ip","organization":"yytan25","domainName":"github"},"branch":"master","displayName":"yytan25/ip[master]","outputFolderName":"yytan25_ip_master"},{"location":{"location":"https://github.com/tjch-o/ip.git","repoName":"ip","organization":"tjch-o","domainName":"github"},"branch":"master","displayName":"tjch-o/ip[master]","outputFolderName":"tjch-o_ip_master"},{"location":{"location":"https://github.com/jedkohjk/ip.git","repoName":"ip","organization":"jedkohjk","domainName":"github"},"branch":"master","displayName":"jedkohjk/ip[master]","outputFolderName":"jedkohjk_ip_master"},{"location":{"location":"https://github.com/raynertjx/ip.git","repoName":"ip","organization":"raynertjx","domainName":"github"},"branch":"master","displayName":"raynertjx/ip[master]","outputFolderName":"raynertjx_ip_master"},{"location":{"location":"https://github.com/cmHuang777/ip.git","repoName":"ip","organization":"cmHuang777","domainName":"github"},"branch":"master","displayName":"cmHuang777/ip[master]","outputFolderName":"cmHuang777_ip_master"},{"location":{"location":"https://github.com/wui-hong/ip.git","repoName":"ip","organization":"wui-hong","domainName":"github"},"branch":"master","displayName":"wui-hong/ip[master]","outputFolderName":"wui-hong_ip_master"},{"location":{"location":"https://github.com/PohSayKeong/ip.git","repoName":"ip","organization":"PohSayKeong","domainName":"github"},"branch":"master","displayName":"PohSayKeong/ip[master]","outputFolderName":"PohSayKeong_ip_master"},{"location":{"location":"https://github.com/lsyurea/ip.git","repoName":"ip","organization":"lsyurea","domainName":"github"},"branch":"master","displayName":"lsyurea/ip[master]","outputFolderName":"lsyurea_ip_master"},{"location":{"location":"https://github.com/ong-wei-hong/ip.git","repoName":"ip","organization":"ong-wei-hong","domainName":"github"},"branch":"master","displayName":"ong-wei-hong/ip[master]","outputFolderName":"ong-wei-hong_ip_master"},{"location":{"location":"https://github.com/asdfghjkxd/ip.git","repoName":"ip","organization":"asdfghjkxd","domainName":"github"},"branch":"master","displayName":"asdfghjkxd/ip[master]","outputFolderName":"asdfghjkxd_ip_master"},{"location":{"location":"https://github.com/GSgiansen/ip.git","repoName":"ip","organization":"GSgiansen","domainName":"github"},"branch":"master","displayName":"GSgiansen/ip[master]","outputFolderName":"GSgiansen_ip_master"},{"location":{"location":"https://github.com/syamfarh/ip.git","repoName":"ip","organization":"syamfarh","domainName":"github"},"branch":"master","displayName":"syamfarh/ip[master]","outputFolderName":"syamfarh_ip_master"},{"location":{"location":"https://github.com/PetrichorPrecipice/ip.git","repoName":"ip","organization":"PetrichorPrecipice","domainName":"github"},"branch":"master","displayName":"PetrichorPrecipice/ip[master]","outputFolderName":"PetrichorPrecipice_ip_master"},{"location":{"location":"https://github.com/ngeeyonglim/ip.git","repoName":"ip","organization":"ngeeyonglim","domainName":"github"},"branch":"master","displayName":"ngeeyonglim/ip[master]","outputFolderName":"ngeeyonglim_ip_master"},{"location":{"location":"https://github.com/ivanleekk/ip.git","repoName":"ip","organization":"ivanleekk","domainName":"github"},"branch":"master","displayName":"ivanleekk/ip[master]","outputFolderName":"ivanleekk_ip_master"},{"location":{"location":"https://github.com/ryanozx/ip.git","repoName":"ip","organization":"ryanozx","domainName":"github"},"branch":"master","displayName":"ryanozx/ip[master]","outputFolderName":"ryanozx_ip_master"},{"location":{"location":"https://github.com/Jweewee/ip.git","repoName":"ip","organization":"Jweewee","domainName":"github"},"branch":"master","displayName":"Jweewee/ip[master]","outputFolderName":"Jweewee_ip_master"},{"location":{"location":"https://github.com/supermii2/ip.git","repoName":"ip","organization":"supermii2","domainName":"github"},"branch":"master","displayName":"supermii2/ip[master]","outputFolderName":"supermii2_ip_master"},{"location":{"location":"https://github.com/bkjwjason/ip.git","repoName":"ip","organization":"bkjwjason","domainName":"github"},"branch":"master","displayName":"bkjwjason/ip[master]","outputFolderName":"bkjwjason_ip_master"},{"location":{"location":"https://github.com/Sasmik23/ip.git","repoName":"ip","organization":"Sasmik23","domainName":"github"},"branch":"master","displayName":"Sasmik23/ip[master]","outputFolderName":"Sasmik23_ip_master"},{"location":{"location":"https://github.com/nathanielcalimag/ip.git","repoName":"ip","organization":"nathanielcalimag","domainName":"github"},"branch":"master","displayName":"nathanielcalimag/ip[master]","outputFolderName":"nathanielcalimag_ip_master"},{"location":{"location":"https://github.com/AlagappanRa/ip.git","repoName":"ip","organization":"AlagappanRa","domainName":"github"},"branch":"master","displayName":"AlagappanRa/ip[master]","outputFolderName":"AlagappanRa_ip_master"},{"location":{"location":"https://github.com/McNaBry/ip.git","repoName":"ip","organization":"McNaBry","domainName":"github"},"branch":"master","displayName":"McNaBry/ip[master]","outputFolderName":"McNaBry_ip_master"},{"location":{"location":"https://github.com/phiphi-tan/ip.git","repoName":"ip","organization":"phiphi-tan","domainName":"github"},"branch":"master","displayName":"phiphi-tan/ip[master]","outputFolderName":"phiphi-tan_ip_master"},{"location":{"location":"https://github.com/LicongHuang/ip.git","repoName":"ip","organization":"LicongHuang","domainName":"github"},"branch":"master","displayName":"LicongHuang/ip[master]","outputFolderName":"LicongHuang_ip_master"},{"location":{"location":"https://github.com/tanshiyu1999/ip.git","repoName":"ip","organization":"tanshiyu1999","domainName":"github"},"branch":"master","displayName":"tanshiyu1999/ip[master]","outputFolderName":"tanshiyu1999_ip_master"},{"location":{"location":"https://github.com/raydenlim/ip.git","repoName":"ip","organization":"raydenlim","domainName":"github"},"branch":"master","displayName":"raydenlim/ip[master]","outputFolderName":"raydenlim_ip_master"},{"location":{"location":"https://github.com/jianyangg/ip.git","repoName":"ip","organization":"jianyangg","domainName":"github"},"branch":"master","displayName":"jianyangg/ip[master]","outputFolderName":"jianyangg_ip_master"},{"location":{"location":"https://github.com/rionshocker/ip.git","repoName":"ip","organization":"rionshocker","domainName":"github"},"branch":"master","displayName":"rionshocker/ip[master]","outputFolderName":"rionshocker_ip_master"},{"location":{"location":"https://github.com/conradsoon/ip.git","repoName":"ip","organization":"conradsoon","domainName":"github"},"branch":"master","displayName":"conradsoon/ip[master]","outputFolderName":"conradsoon_ip_master"},{"location":{"location":"https://github.com/Jonyxzx/ip.git","repoName":"ip","organization":"Jonyxzx","domainName":"github"},"branch":"master","displayName":"Jonyxzx/ip[master]","outputFolderName":"Jonyxzx_ip_master"},{"location":{"location":"https://github.com/euchangxian/ip.git","repoName":"ip","organization":"euchangxian","domainName":"github"},"branch":"master","displayName":"euchangxian/ip[master]","outputFolderName":"euchangxian_ip_master"},{"location":{"location":"https://github.com/teoks0199/ip.git","repoName":"ip","organization":"teoks0199","domainName":"github"},"branch":"master","displayName":"teoks0199/ip[master]","outputFolderName":"teoks0199_ip_master"},{"location":{"location":"https://github.com/HollaG/ip.git","repoName":"ip","organization":"HollaG","domainName":"github"},"branch":"master","displayName":"HollaG/ip[master]","outputFolderName":"HollaG_ip_master"},{"location":{"location":"https://github.com/leezhengjing/ip.git","repoName":"ip","organization":"leezhengjing","domainName":"github"},"branch":"master","displayName":"leezhengjing/ip[master]","outputFolderName":"leezhengjing_ip_master"},{"location":{"location":"https://github.com/timleow/ip.git","repoName":"ip","organization":"timleow","domainName":"github"},"branch":"master","displayName":"timleow/ip[master]","outputFolderName":"timleow_ip_master"},{"location":{"location":"https://github.com/jacksonyuan256/ip.git","repoName":"ip","organization":"jacksonyuan256","domainName":"github"},"branch":"master","displayName":"jacksonyuan256/ip[master]","outputFolderName":"jacksonyuan256_ip_master"},{"location":{"location":"https://github.com/victorlaiyeeteng/ip.git","repoName":"ip","organization":"victorlaiyeeteng","domainName":"github"},"branch":"master","displayName":"victorlaiyeeteng/ip[master]","outputFolderName":"victorlaiyeeteng_ip_master"},{"location":{"location":"https://github.com/prawnzyy/ip.git","repoName":"ip","organization":"prawnzyy","domainName":"github"},"branch":"master","displayName":"prawnzyy/ip[master]","outputFolderName":"prawnzyy_ip_master"},{"location":{"location":"https://github.com/ryanongwx/ip.git","repoName":"ip","organization":"ryanongwx","domainName":"github"},"branch":"master","displayName":"ryanongwx/ip[master]","outputFolderName":"ryanongwx_ip_master"},{"location":{"location":"https://github.com/tohpinren/ip.git","repoName":"ip","organization":"tohpinren","domainName":"github"},"branch":"master","displayName":"tohpinren/ip[master]","outputFolderName":"tohpinren_ip_master"},{"location":{"location":"https://github.com/DeltonCheng/ip.git","repoName":"ip","organization":"DeltonCheng","domainName":"github"},"branch":"master","displayName":"DeltonCheng/ip[master]","outputFolderName":"DeltonCheng_ip_master"},{"location":{"location":"https://github.com/leontan2/ip.git","repoName":"ip","organization":"leontan2","domainName":"github"},"branch":"master","displayName":"leontan2/ip[master]","outputFolderName":"leontan2_ip_master"},{"location":{"location":"https://github.com/alvinlim277/ip.git","repoName":"ip","organization":"alvinlim277","domainName":"github"},"branch":"master","displayName":"alvinlim277/ip[master]","outputFolderName":"alvinlim277_ip_master"},{"location":{"location":"https://github.com/lshaoqin/ip.git","repoName":"ip","organization":"lshaoqin","domainName":"github"},"branch":"master","displayName":"lshaoqin/ip[master]","outputFolderName":"lshaoqin_ip_master"},{"location":{"location":"https://github.com/ChongWeiJie29/ip.git","repoName":"ip","organization":"ChongWeiJie29","domainName":"github"},"branch":"master","displayName":"ChongWeiJie29/ip[master]","outputFolderName":"ChongWeiJie29_ip_master"},{"location":{"location":"https://github.com/zhonghan721/ip.git","repoName":"ip","organization":"zhonghan721","domainName":"github"},"branch":"master","displayName":"zhonghan721/ip[master]","outputFolderName":"zhonghan721_ip_master"},{"location":{"location":"https://github.com/teozhengyang/ip.git","repoName":"ip","organization":"teozhengyang","domainName":"github"},"branch":"master","displayName":"teozhengyang/ip[master]","outputFolderName":"teozhengyang_ip_master"},{"location":{"location":"https://github.com/garylow2001/ip.git","repoName":"ip","organization":"garylow2001","domainName":"github"},"branch":"master","displayName":"garylow2001/ip[master]","outputFolderName":"garylow2001_ip_master"},{"location":{"location":"https://github.com/Cleon2/ip.git","repoName":"ip","organization":"Cleon2","domainName":"github"},"branch":"master","displayName":"Cleon2/ip[master]","outputFolderName":"Cleon2_ip_master"},{"location":{"location":"https://github.com/limzhenwy/ip.git","repoName":"ip","organization":"limzhenwy","domainName":"github"},"branch":"master","displayName":"limzhenwy/ip[master]","outputFolderName":"limzhenwy_ip_master"},{"location":{"location":"https://github.com/ItsTYtan/ip.git","repoName":"ip","organization":"ItsTYtan","domainName":"github"},"branch":"master","displayName":"ItsTYtan/ip[master]","outputFolderName":"ItsTYtan_ip_master"},{"location":{"location":"https://github.com/owenyeo/ip.git","repoName":"ip","organization":"owenyeo","domainName":"github"},"branch":"master","displayName":"owenyeo/ip[master]","outputFolderName":"owenyeo_ip_master"},{"location":{"location":"https://github.com/jonasongg/ip.git","repoName":"ip","organization":"jonasongg","domainName":"github"},"branch":"master","displayName":"jonasongg/ip[master]","outputFolderName":"jonasongg_ip_master"},{"location":{"location":"https://github.com/Ruizhi2001/ip.git","repoName":"ip","organization":"Ruizhi2001","domainName":"github"},"branch":"master","displayName":"Ruizhi2001/ip[master]","outputFolderName":"Ruizhi2001_ip_master"},{"location":{"location":"https://github.com/Dioclei/ip.git","repoName":"ip","organization":"Dioclei","domainName":"github"},"branch":"master","displayName":"Dioclei/ip[master]","outputFolderName":"Dioclei_ip_master"},{"location":{"location":"https://github.com/bobscodedump/ip.git","repoName":"ip","organization":"bobscodedump","domainName":"github"},"branch":"master","displayName":"bobscodedump/ip[master]","outputFolderName":"bobscodedump_ip_master"},{"location":{"location":"https://github.com/andrefoo/ip.git","repoName":"ip","organization":"andrefoo","domainName":"github"},"branch":"master","displayName":"andrefoo/ip[master]","outputFolderName":"andrefoo_ip_master"},{"location":{"location":"https://github.com/Bombbird2001/ip.git","repoName":"ip","organization":"Bombbird2001","domainName":"github"},"branch":"master","displayName":"Bombbird2001/ip[master]","outputFolderName":"Bombbird2001_ip_master"},{"location":{"location":"https://github.com/chewjh1234/ip.git","repoName":"ip","organization":"chewjh1234","domainName":"github"},"branch":"master","displayName":"chewjh1234/ip[master]","outputFolderName":"chewjh1234_ip_master"},{"location":{"location":"https://github.com/dloh2236/ip.git","repoName":"ip","organization":"dloh2236","domainName":"github"},"branch":"master","displayName":"dloh2236/ip[master]","outputFolderName":"dloh2236_ip_master"},{"location":{"location":"https://github.com/chew01/ip.git","repoName":"ip","organization":"chew01","domainName":"github"},"branch":"master","displayName":"chew01/ip[master]","outputFolderName":"chew01_ip_master"},{"location":{"location":"https://github.com/trgao/ip.git","repoName":"ip","organization":"trgao","domainName":"github"},"branch":"master","displayName":"trgao/ip[master]","outputFolderName":"trgao_ip_master"},{"location":{"location":"https://github.com/richiehx/ip.git","repoName":"ip","organization":"richiehx","domainName":"github"},"branch":"master","displayName":"richiehx/ip[master]","outputFolderName":"richiehx_ip_master"},{"location":{"location":"https://github.com/LoMaply/ip.git","repoName":"ip","organization":"LoMaply","domainName":"github"},"branch":"master","displayName":"LoMaply/ip[master]","outputFolderName":"LoMaply_ip_master"},{"location":{"location":"https://github.com/Originalidk/ip.git","repoName":"ip","organization":"Originalidk","domainName":"github"},"branch":"master","displayName":"Originalidk/ip[master]","outputFolderName":"Originalidk_ip_master"},{"location":{"location":"https://github.com/kiatkat/ip.git","repoName":"ip","organization":"kiatkat","domainName":"github"},"branch":"master","displayName":"kiatkat/ip[master]","outputFolderName":"kiatkat_ip_master"},{"location":{"location":"https://github.com/juliusgambe/ip.git","repoName":"ip","organization":"juliusgambe","domainName":"github"},"branch":"master","displayName":"juliusgambe/ip[master]","outputFolderName":"juliusgambe_ip_master"},{"location":{"location":"https://github.com/jiakai-17/ip.git","repoName":"ip","organization":"jiakai-17","domainName":"github"},"branch":"master","displayName":"jiakai-17/ip[master]","outputFolderName":"jiakai-17_ip_master"},{"location":{"location":"https://github.com/nikele2001/ip.git","repoName":"ip","organization":"nikele2001","domainName":"github"},"branch":"master","displayName":"nikele2001/ip[master]","outputFolderName":"nikele2001_ip_master"},{"location":{"location":"https://github.com/jylow/ip.git","repoName":"ip","organization":"jylow","domainName":"github"},"branch":"master","displayName":"jylow/ip[master]","outputFolderName":"jylow_ip_master"},{"location":{"location":"https://github.com/jx124/ip.git","repoName":"ip","organization":"jx124","domainName":"github"},"branch":"master","displayName":"jx124/ip[master]","outputFolderName":"jx124_ip_master"},{"location":{"location":"https://github.com/Kb-Tay/ip.git","repoName":"ip","organization":"Kb-Tay","domainName":"github"},"branch":"master","displayName":"Kb-Tay/ip[master]","outputFolderName":"Kb-Tay_ip_master"},{"location":{"location":"https://github.com/jinyuan0425/ip.git","repoName":"ip","organization":"jinyuan0425","domainName":"github"},"branch":"master","displayName":"jinyuan0425/ip[master]","outputFolderName":"jinyuan0425_ip_master"},{"location":{"location":"https://github.com/darrentfy/ip.git","repoName":"ip","organization":"darrentfy","domainName":"github"},"branch":"master","displayName":"darrentfy/ip[master]","outputFolderName":"darrentfy_ip_master"},{"location":{"location":"https://github.com/HEEaZ/ip.git","repoName":"ip","organization":"HEEaZ","domainName":"github"},"branch":"master","displayName":"HEEaZ/ip[master]","outputFolderName":"HEEaZ_ip_master"},{"location":{"location":"https://github.com/ji-just-ji/ip.git","repoName":"ip","organization":"ji-just-ji","domainName":"github"},"branch":"master","displayName":"ji-just-ji/ip[master]","outputFolderName":"ji-just-ji_ip_master"},{"location":{"location":"https://github.com/simbayippy/ip.git","repoName":"ip","organization":"simbayippy","domainName":"github"},"branch":"master","displayName":"simbayippy/ip[master]","outputFolderName":"simbayippy_ip_master"},{"location":{"location":"https://github.com/teozern1/ip.git","repoName":"ip","organization":"teozern1","domainName":"github"},"branch":"master","displayName":"teozern1/ip[master]","outputFolderName":"teozern1_ip_master"},{"location":{"location":"https://github.com/brein62/ip.git","repoName":"ip","organization":"brein62","domainName":"github"},"branch":"master","displayName":"brein62/ip[master]","outputFolderName":"brein62_ip_master"},{"location":{"location":"https://github.com/awhb/ip.git","repoName":"ip","organization":"awhb","domainName":"github"},"branch":"master","displayName":"awhb/ip[master]","outputFolderName":"awhb_ip_master"},{"location":{"location":"https://github.com/Mahidharah/ip.git","repoName":"ip","organization":"Mahidharah","domainName":"github"},"branch":"master","displayName":"Mahidharah/ip[master]","outputFolderName":"Mahidharah_ip_master"},{"location":{"location":"https://github.com/timetraveller-123/ip.git","repoName":"ip","organization":"timetraveller-123","domainName":"github"},"branch":"master","displayName":"timetraveller-123/ip[master]","outputFolderName":"timetraveller-123_ip_master"},{"location":{"location":"https://github.com/ElginTZM/ip.git","repoName":"ip","organization":"ElginTZM","domainName":"github"},"branch":"master","displayName":"ElginTZM/ip[master]","outputFolderName":"ElginTZM_ip_master"},{"location":{"location":"https://github.com/ryamgoh/ip.git","repoName":"ip","organization":"ryamgoh","domainName":"github"},"branch":"master","displayName":"ryamgoh/ip[master]","outputFolderName":"ryamgoh_ip_master"},{"location":{"location":"https://github.com/Blizzeracz/ip.git","repoName":"ip","organization":"Blizzeracz","domainName":"github"},"branch":"master","displayName":"Blizzeracz/ip[master]","outputFolderName":"Blizzeracz_ip_master"},{"location":{"location":"https://github.com/kiwibang/ip.git","repoName":"ip","organization":"kiwibang","domainName":"github"},"branch":"master","displayName":"kiwibang/ip[master]","outputFolderName":"kiwibang_ip_master"},{"location":{"location":"https://github.com/redtailedfox/ip.git","repoName":"ip","organization":"redtailedfox","domainName":"github"},"branch":"master","displayName":"redtailedfox/ip[master]","outputFolderName":"redtailedfox_ip_master"},{"location":{"location":"https://github.com/lamchenghou/ip.git","repoName":"ip","organization":"lamchenghou","domainName":"github"},"branch":"master","displayName":"lamchenghou/ip[master]","outputFolderName":"lamchenghou_ip_master"},{"location":{"location":"https://github.com/gongg21/ip.git","repoName":"ip","organization":"gongg21","domainName":"github"},"branch":"master","displayName":"gongg21/ip[master]","outputFolderName":"gongg21_ip_master"},{"location":{"location":"https://github.com/CJ-Lee01/ip.git","repoName":"ip","organization":"CJ-Lee01","domainName":"github"},"branch":"master","displayName":"CJ-Lee01/ip[master]","outputFolderName":"CJ-Lee01_ip_master"},{"location":{"location":"https://github.com/Sheeepen/ip.git","repoName":"ip","organization":"Sheeepen","domainName":"github"},"branch":"master","displayName":"Sheeepen/ip[master]","outputFolderName":"Sheeepen_ip_master"},{"location":{"location":"https://github.com/AaronJT1/ip.git","repoName":"ip","organization":"AaronJT1","domainName":"github"},"branch":"master","displayName":"AaronJT1/ip[master]","outputFolderName":"AaronJT1_ip_master"},{"location":{"location":"https://github.com/Respirayson/ip.git","repoName":"ip","organization":"Respirayson","domainName":"github"},"branch":"master","displayName":"Respirayson/ip[master]","outputFolderName":"Respirayson_ip_master"},{"location":{"location":"https://github.com/dickongwd/ip.git","repoName":"ip","organization":"dickongwd","domainName":"github"},"branch":"master","displayName":"dickongwd/ip[master]","outputFolderName":"dickongwd_ip_master"},{"location":{"location":"https://github.com/nicholascher/ip.git","repoName":"ip","organization":"nicholascher","domainName":"github"},"branch":"master","displayName":"nicholascher/ip[master]","outputFolderName":"nicholascher_ip_master"},{"location":{"location":"https://github.com/et-irl/ip.git","repoName":"ip","organization":"et-irl","domainName":"github"},"branch":"master","displayName":"et-irl/ip[master]","outputFolderName":"et-irl_ip_master"},{"location":{"location":"https://github.com/aslam341/ip.git","repoName":"ip","organization":"aslam341","domainName":"github"},"branch":"master","displayName":"aslam341/ip[master]","outputFolderName":"aslam341_ip_master"},{"location":{"location":"https://github.com/seantehds/ip.git","repoName":"ip","organization":"seantehds","domainName":"github"},"branch":"master","displayName":"seantehds/ip[master]","outputFolderName":"seantehds_ip_master"},{"location":{"location":"https://github.com/jianrong7/ip.git","repoName":"ip","organization":"jianrong7","domainName":"github"},"branch":"master","displayName":"jianrong7/ip[master]","outputFolderName":"jianrong7_ip_master"},{"location":{"location":"https://github.com/TeeRenJing/ip.git","repoName":"ip","organization":"TeeRenJing","domainName":"github"},"branch":"master","displayName":"TeeRenJing/ip[master]","outputFolderName":"TeeRenJing_ip_master"},{"location":{"location":"https://github.com/RoeReRe/ip.git","repoName":"ip","organization":"RoeReRe","domainName":"github"},"branch":"master","displayName":"RoeReRe/ip[master]","outputFolderName":"RoeReRe_ip_master"},{"location":{"location":"https://github.com/zsh-eng/ip.git","repoName":"ip","organization":"zsh-eng","domainName":"github"},"branch":"master","displayName":"zsh-eng/ip[master]","outputFolderName":"zsh-eng_ip_master"},{"location":{"location":"https://github.com/seanpzk/ip.git","repoName":"ip","organization":"seanpzk","domainName":"github"},"branch":"master","displayName":"seanpzk/ip[master]","outputFolderName":"seanpzk_ip_master"},{"location":{"location":"https://github.com/quzhetao01/ip.git","repoName":"ip","organization":"quzhetao01","domainName":"github"},"branch":"master","displayName":"quzhetao01/ip[master]","outputFolderName":"quzhetao01_ip_master"},{"location":{"location":"https://github.com/joel-foo/ip.git","repoName":"ip","organization":"joel-foo","domainName":"github"},"branch":"master","displayName":"joel-foo/ip[master]","outputFolderName":"joel-foo_ip_master"},{"location":{"location":"https://github.com/markgcera/ip.git","repoName":"ip","organization":"markgcera","domainName":"github"},"branch":"master","displayName":"markgcera/ip[master]","outputFolderName":"markgcera_ip_master"},{"location":{"location":"https://github.com/dylkaw/ip.git","repoName":"ip","organization":"dylkaw","domainName":"github"},"branch":"master","displayName":"dylkaw/ip[master]","outputFolderName":"dylkaw_ip_master"},{"location":{"location":"https://github.com/SelwynAng/ip.git","repoName":"ip","organization":"SelwynAng","domainName":"github"},"branch":"master","displayName":"SelwynAng/ip[master]","outputFolderName":"SelwynAng_ip_master"},{"location":{"location":"https://github.com/jinyang628/ip.git","repoName":"ip","organization":"jinyang628","domainName":"github"},"branch":"master","displayName":"jinyang628/ip[master]","outputFolderName":"jinyang628_ip_master"},{"location":{"location":"https://github.com/matochichap/ip.git","repoName":"ip","organization":"matochichap","domainName":"github"},"branch":"master","displayName":"matochichap/ip[master]","outputFolderName":"matochichap_ip_master"},{"location":{"location":"https://github.com/sk2001git/ip.git","repoName":"ip","organization":"sk2001git","domainName":"github"},"branch":"master","displayName":"sk2001git/ip[master]","outputFolderName":"sk2001git_ip_master"},{"location":{"location":"https://github.com/jason-raiin/ip.git","repoName":"ip","organization":"jason-raiin","domainName":"github"},"branch":"master","displayName":"jason-raiin/ip[master]","outputFolderName":"jason-raiin_ip_master"},{"location":{"location":"https://github.com/Sebtey/ip.git","repoName":"ip","organization":"Sebtey","domainName":"github"},"branch":"master","displayName":"Sebtey/ip[master]","outputFolderName":"Sebtey_ip_master"},{"location":{"location":"https://github.com/Jweng88/ip.git","repoName":"ip","organization":"Jweng88","domainName":"github"},"branch":"master","displayName":"Jweng88/ip[master]","outputFolderName":"Jweng88_ip_master"},{"location":{"location":"https://github.com/billieboy7/ip.git","repoName":"ip","organization":"billieboy7","domainName":"github"},"branch":"master","displayName":"billieboy7/ip[master]","outputFolderName":"billieboy7_ip_master"},{"location":{"location":"https://github.com/ldinghan/ip.git","repoName":"ip","organization":"ldinghan","domainName":"github"},"branch":"master","displayName":"ldinghan/ip[master]","outputFolderName":"ldinghan_ip_master"},{"location":{"location":"https://github.com/anthonytamzil/ip.git","repoName":"ip","organization":"anthonytamzil","domainName":"github"},"branch":"master","displayName":"anthonytamzil/ip[master]","outputFolderName":"anthonytamzil_ip_master"},{"location":{"location":"https://github.com/ryantzr1/ip.git","repoName":"ip","organization":"ryantzr1","domainName":"github"},"branch":"master","displayName":"ryantzr1/ip[master]","outputFolderName":"ryantzr1_ip_master"},{"location":{"location":"https://github.com/shuyangk/ip.git","repoName":"ip","organization":"shuyangk","domainName":"github"},"branch":"master","displayName":"shuyangk/ip[master]","outputFolderName":"shuyangk_ip_master"},{"location":{"location":"https://github.com/seewhyjay/ip.git","repoName":"ip","organization":"seewhyjay","domainName":"github"},"branch":"master","displayName":"seewhyjay/ip[master]","outputFolderName":"seewhyjay_ip_master"},{"location":{"location":"https://github.com/waseemingly/ip.git","repoName":"ip","organization":"waseemingly","domainName":"github"},"branch":"master","displayName":"waseemingly/ip[master]","outputFolderName":"waseemingly_ip_master"},{"location":{"location":"https://github.com/DistractedCat/ip.git","repoName":"ip","organization":"DistractedCat","domainName":"github"},"branch":"master","displayName":"DistractedCat/ip[master]","outputFolderName":"DistractedCat_ip_master"},{"location":{"location":"https://github.com/geraldngjx/ip.git","repoName":"ip","organization":"geraldngjx","domainName":"github"},"branch":"master","displayName":"geraldngjx/ip[master]","outputFolderName":"geraldngjx_ip_master"},{"location":{"location":"https://github.com/tayian/ip.git","repoName":"ip","organization":"tayian","domainName":"github"},"branch":"master","displayName":"tayian/ip[master]","outputFolderName":"tayian_ip_master"},{"location":{"location":"https://github.com/AlfredBeNoel/ip.git","repoName":"ip","organization":"AlfredBeNoel","domainName":"github"},"branch":"master","displayName":"AlfredBeNoel/ip[master]","outputFolderName":"AlfredBeNoel_ip_master"},{"location":{"location":"https://github.com/Chen1x/ip.git","repoName":"ip","organization":"Chen1x","domainName":"github"},"branch":"master","displayName":"Chen1x/ip[master]","outputFolderName":"Chen1x_ip_master"},{"location":{"location":"https://github.com/juzzztinsoong/ip.git","repoName":"ip","organization":"juzzztinsoong","domainName":"github"},"branch":"master","displayName":"juzzztinsoong/ip[master]","outputFolderName":"juzzztinsoong_ip_master"},{"location":{"location":"https://github.com/lambraydon/ip.git","repoName":"ip","organization":"lambraydon","domainName":"github"},"branch":"master","displayName":"lambraydon/ip[master]","outputFolderName":"lambraydon_ip_master"},{"location":{"location":"https://github.com/lilozz2/ip.git","repoName":"ip","organization":"lilozz2","domainName":"github"},"branch":"master","displayName":"lilozz2/ip[master]","outputFolderName":"lilozz2_ip_master"},{"location":{"location":"https://github.com/tyouwei/ip.git","repoName":"ip","organization":"tyouwei","domainName":"github"},"branch":"master","displayName":"tyouwei/ip[master]","outputFolderName":"tyouwei_ip_master"},{"location":{"location":"https://github.com/Kailash201/ip.git","repoName":"ip","organization":"Kailash201","domainName":"github"},"branch":"master","displayName":"Kailash201/ip[master]","outputFolderName":"Kailash201_ip_master"},{"location":{"location":"https://github.com/tjingsheng/ip.git","repoName":"ip","organization":"tjingsheng","domainName":"github"},"branch":"master","displayName":"tjingsheng/ip[master]","outputFolderName":"tjingsheng_ip_master"},{"location":{"location":"https://github.com/pangyyen/ip.git","repoName":"ip","organization":"pangyyen","domainName":"github"},"branch":"master","displayName":"pangyyen/ip[master]","outputFolderName":"pangyyen_ip_master"},{"location":{"location":"https://github.com/Khaleelur-Rahman/ip.git","repoName":"ip","organization":"Khaleelur-Rahman","domainName":"github"},"branch":"master","displayName":"Khaleelur-Rahman/ip[master]","outputFolderName":"Khaleelur-Rahman_ip_master"},{"location":{"location":"https://github.com/erohsikivar/ip.git","repoName":"ip","organization":"erohsikivar","domainName":"github"},"branch":"master","displayName":"erohsikivar/ip[master]","outputFolderName":"erohsikivar_ip_master"},{"location":{"location":"https://github.com/shishirbychapur/ip.git","repoName":"ip","organization":"shishirbychapur","domainName":"github"},"branch":"master","displayName":"shishirbychapur/ip[master]","outputFolderName":"shishirbychapur_ip_master"},{"location":{"location":"https://github.com/Badatprogrammiing/ip.git","repoName":"ip","organization":"Badatprogrammiing","domainName":"github"},"branch":"master","displayName":"Badatprogrammiing/ip[master]","outputFolderName":"Badatprogrammiing_ip_master"},{"location":{"location":"https://github.com/ravern/ip.git","repoName":"ip","organization":"ravern","domainName":"github"},"branch":"master","displayName":"ravern/ip[master]","outputFolderName":"ravern_ip_master"},{"location":{"location":"https://github.com/B-enguin/ip.git","repoName":"ip","organization":"B-enguin","domainName":"github"},"branch":"master","displayName":"B-enguin/ip[master]","outputFolderName":"B-enguin_ip_master"},{"location":{"location":"https://github.com/AlyssaPng/ip.git","repoName":"ip","organization":"AlyssaPng","domainName":"github"},"branch":"master","displayName":"AlyssaPng/ip[master]","outputFolderName":"AlyssaPng_ip_master"},{"location":{"location":"https://github.com/flexibo/ip.git","repoName":"ip","organization":"flexibo","domainName":"github"},"branch":"master","displayName":"flexibo/ip[master]","outputFolderName":"flexibo_ip_master"},{"location":{"location":"https://github.com/lordidiot/ip.git","repoName":"ip","organization":"lordidiot","domainName":"github"},"branch":"master","displayName":"lordidiot/ip[master]","outputFolderName":"lordidiot_ip_master"},{"location":{"location":"https://github.com/vansh284/ip.git","repoName":"ip","organization":"vansh284","domainName":"github"},"branch":"master","displayName":"vansh284/ip[master]","outputFolderName":"vansh284_ip_master"},{"location":{"location":"https://github.com/samuelim01/ip.git","repoName":"ip","organization":"samuelim01","domainName":"github"},"branch":"master","displayName":"samuelim01/ip[master]","outputFolderName":"samuelim01_ip_master"},{"location":{"location":"https://github.com/WZWren/ip.git","repoName":"ip","organization":"WZWren","domainName":"github"},"branch":"master","displayName":"WZWren/ip[master]","outputFolderName":"WZWren_ip_master"},{"location":{"location":"https://github.com/cxo05/ip.git","repoName":"ip","organization":"cxo05","domainName":"github"},"branch":"master","displayName":"cxo05/ip[master]","outputFolderName":"cxo05_ip_master"},{"location":{"location":"https://github.com/sudarshan2401/ip.git","repoName":"ip","organization":"sudarshan2401","domainName":"github"},"branch":"master","displayName":"sudarshan2401/ip[master]","outputFolderName":"sudarshan2401_ip_master"},{"location":{"location":"https://github.com/jingyu987/ip.git","repoName":"ip","organization":"jingyu987","domainName":"github"},"branch":"master","displayName":"jingyu987/ip[master]","outputFolderName":"jingyu987_ip_master"},{"location":{"location":"https://github.com/H1410101/ip.git","repoName":"ip","organization":"H1410101","domainName":"github"},"branch":"master","displayName":"H1410101/ip[master]","outputFolderName":"H1410101_ip_master"},{"location":{"location":"https://github.com/MagnificentCreature/ip.git","repoName":"ip","organization":"MagnificentCreature","domainName":"github"},"branch":"master","displayName":"MagnificentCreature/ip[master]","outputFolderName":"MagnificentCreature_ip_master"},{"location":{"location":"https://github.com/shyanyong/ip.git","repoName":"ip","organization":"shyanyong","domainName":"github"},"branch":"master","displayName":"shyanyong/ip[master]","outputFolderName":"shyanyong_ip_master"},{"location":{"location":"https://github.com/peasantbird/ip.git","repoName":"ip","organization":"peasantbird","domainName":"github"},"branch":"master","displayName":"peasantbird/ip[master]","outputFolderName":"peasantbird_ip_master"},{"location":{"location":"https://github.com/tllshan/ip.git","repoName":"ip","organization":"tllshan","domainName":"github"},"branch":"master","displayName":"tllshan/ip[master]","outputFolderName":"tllshan_ip_master"},{"location":{"location":"https://github.com/sushiyade/ip.git","repoName":"ip","organization":"sushiyade","domainName":"github"},"branch":"master","displayName":"sushiyade/ip[master]","outputFolderName":"sushiyade_ip_master"},{"location":{"location":"https://github.com/iyioon/ip.git","repoName":"ip","organization":"iyioon","domainName":"github"},"branch":"master","displayName":"iyioon/ip[master]","outputFolderName":"iyioon_ip_master"},{"location":{"location":"https://github.com/shashahchk/ip.git","repoName":"ip","organization":"shashahchk","domainName":"github"},"branch":"master","displayName":"shashahchk/ip[master]","outputFolderName":"shashahchk_ip_master"},{"location":{"location":"https://github.com/Chandan8186/ip.git","repoName":"ip","organization":"Chandan8186","domainName":"github"},"branch":"master","displayName":"Chandan8186/ip[master]","outputFolderName":"Chandan8186_ip_master"},{"location":{"location":"https://github.com/wesho1107/ip.git","repoName":"ip","organization":"wesho1107","domainName":"github"},"branch":"master","displayName":"wesho1107/ip[master]","outputFolderName":"wesho1107_ip_master"},{"location":{"location":"https://github.com/tim-pipi/ip.git","repoName":"ip","organization":"tim-pipi","domainName":"github"},"branch":"master","displayName":"tim-pipi/ip[master]","outputFolderName":"tim-pipi_ip_master"},{"location":{"location":"https://github.com/emzm2023/ip.git","repoName":"ip","organization":"emzm2023","domainName":"github"},"branch":"master","displayName":"emzm2023/ip[master]","outputFolderName":"emzm2023_ip_master"},{"location":{"location":"https://github.com/dlathyun/ip.git","repoName":"ip","organization":"dlathyun","domainName":"github"},"branch":"master","displayName":"dlathyun/ip[master]","outputFolderName":"dlathyun_ip_master"},{"location":{"location":"https://github.com/tanboonkhong/ip.git","repoName":"ip","organization":"tanboonkhong","domainName":"github"},"branch":"master","displayName":"tanboonkhong/ip[master]","outputFolderName":"tanboonkhong_ip_master"},{"location":{"location":"https://github.com/joeng03/ip.git","repoName":"ip","organization":"joeng03","domainName":"github"},"branch":"master","displayName":"joeng03/ip[master]","outputFolderName":"joeng03_ip_master"},{"location":{"location":"https://github.com/VN-Hao/ip.git","repoName":"ip","organization":"VN-Hao","domainName":"github"},"branch":"master","displayName":"VN-Hao/ip[master]","outputFolderName":"VN-Hao_ip_master"},{"location":{"location":"https://github.com/NgChunMan/ip.git","repoName":"ip","organization":"NgChunMan","domainName":"github"},"branch":"master","displayName":"NgChunMan/ip[master]","outputFolderName":"NgChunMan_ip_master"},{"location":{"location":"https://github.com/TiwKangXu/ip.git","repoName":"ip","organization":"TiwKangXu","domainName":"github"},"branch":"master","displayName":"TiwKangXu/ip[master]","outputFolderName":"TiwKangXu_ip_master"},{"location":{"location":"https://github.com/josepholim/ip.git","repoName":"ip","organization":"josepholim","domainName":"github"},"branch":"master","displayName":"josepholim/ip[master]","outputFolderName":"josepholim_ip_master"},{"location":{"location":"https://github.com/dinde2004/ip.git","repoName":"ip","organization":"dinde2004","domainName":"github"},"branch":"master","displayName":"dinde2004/ip[master]","outputFolderName":"dinde2004_ip_master"},{"location":{"location":"https://github.com/yucongkoo/ip.git","repoName":"ip","organization":"yucongkoo","domainName":"github"},"branch":"master","displayName":"yucongkoo/ip[master]","outputFolderName":"yucongkoo_ip_master"},{"location":{"location":"https://github.com/TohLiYuan/ip.git","repoName":"ip","organization":"TohLiYuan","domainName":"github"},"branch":"master","displayName":"TohLiYuan/ip[master]","outputFolderName":"TohLiYuan_ip_master"},{"location":{"location":"https://github.com/NereusWB922/ip.git","repoName":"ip","organization":"NereusWB922","domainName":"github"},"branch":"master","displayName":"NereusWB922/ip[master]","outputFolderName":"NereusWB922_ip_master"},{"location":{"location":"https://github.com/ph-nathan/ip.git","repoName":"ip","organization":"ph-nathan","domainName":"github"},"branch":"master","displayName":"ph-nathan/ip[master]","outputFolderName":"ph-nathan_ip_master"},{"location":{"location":"https://github.com/antonTan96/ip.git","repoName":"ip","organization":"antonTan96","domainName":"github"},"branch":"master","displayName":"antonTan96/ip[master]","outputFolderName":"antonTan96_ip_master"},{"location":{"location":"https://github.com/WinstonLeonard/ip.git","repoName":"ip","organization":"WinstonLeonard","domainName":"github"},"branch":"master","displayName":"WinstonLeonard/ip[master]","outputFolderName":"WinstonLeonard_ip_master"},{"location":{"location":"https://github.com/TehOPanas/ip.git","repoName":"ip","organization":"TehOPanas","domainName":"github"},"branch":"master","displayName":"TehOPanas/ip[master]","outputFolderName":"TehOPanas_ip_master"},{"location":{"location":"https://github.com/marioalvaro/ip.git","repoName":"ip","organization":"marioalvaro","domainName":"github"},"branch":"master","displayName":"marioalvaro/ip[master]","outputFolderName":"marioalvaro_ip_master"},{"location":{"location":"https://github.com/LINCHENYU2030S/ip.git","repoName":"ip","organization":"LINCHENYU2030S","domainName":"github"},"branch":"master","displayName":"LINCHENYU2030S/ip[master]","outputFolderName":"LINCHENYU2030S_ip_master"},{"location":{"location":"https://github.com/LamJiuFong/ip.git","repoName":"ip","organization":"LamJiuFong","domainName":"github"},"branch":"master","displayName":"LamJiuFong/ip[master]","outputFolderName":"LamJiuFong_ip_master"},{"location":{"location":"https://github.com/AndrewJanong/ip.git","repoName":"ip","organization":"AndrewJanong","domainName":"github"},"branch":"master","displayName":"AndrewJanong/ip[master]","outputFolderName":"AndrewJanong_ip_master"},{"location":{"location":"https://github.com/songfangyl/ip.git","repoName":"ip","organization":"songfangyl","domainName":"github"},"branch":"master","displayName":"songfangyl/ip[master]","outputFolderName":"songfangyl_ip_master"},{"location":{"location":"https://github.com/AriellaCallista/ip.git","repoName":"ip","organization":"AriellaCallista","domainName":"github"},"branch":"master","displayName":"AriellaCallista/ip[master]","outputFolderName":"AriellaCallista_ip_master"},{"location":{"location":"https://github.com/KamJiaYue/ip.git","repoName":"ip","organization":"KamJiaYue","domainName":"github"},"branch":"master","displayName":"KamJiaYue/ip[master]","outputFolderName":"KamJiaYue_ip_master"},{"location":{"location":"https://github.com/feifeiraindrops/ip.git","repoName":"ip","organization":"feifeiraindrops","domainName":"github"},"branch":"master","displayName":"feifeiraindrops/ip[master]","outputFolderName":"feifeiraindrops_ip_master"},{"location":{"location":"https://github.com/czhiruo/ip.git","repoName":"ip","organization":"czhiruo","domainName":"github"},"branch":"master","displayName":"czhiruo/ip[master]","outputFolderName":"czhiruo_ip_master"},{"location":{"location":"https://github.com/butteredyakiimo/ip.git","repoName":"ip","organization":"butteredyakiimo","domainName":"github"},"branch":"master","displayName":"butteredyakiimo/ip[master]","outputFolderName":"butteredyakiimo_ip_master"},{"location":{"location":"https://github.com/RiyaMehta2211/ip.git","repoName":"ip","organization":"RiyaMehta2211","domainName":"github"},"branch":"master","displayName":"RiyaMehta2211/ip[master]","outputFolderName":"RiyaMehta2211_ip_master"},{"location":{"location":"https://github.com/beatricecst/ip.git","repoName":"ip","organization":"beatricecst","domainName":"github"},"branch":"master","displayName":"beatricecst/ip[master]","outputFolderName":"beatricecst_ip_master"},{"location":{"location":"https://github.com/maypfv/ip.git","repoName":"ip","organization":"maypfv","domainName":"github"},"branch":"master","displayName":"maypfv/ip[master]","outputFolderName":"maypfv_ip_master"},{"location":{"location":"https://github.com/pra-navi/ip.git","repoName":"ip","organization":"pra-navi","domainName":"github"},"branch":"master","displayName":"pra-navi/ip[master]","outputFolderName":"pra-navi_ip_master"},{"location":{"location":"https://github.com/xxiaoweii/ip.git","repoName":"ip","organization":"xxiaoweii","domainName":"github"},"branch":"master","displayName":"xxiaoweii/ip[master]","outputFolderName":"xxiaoweii_ip_master"},{"location":{"location":"https://github.com/qyaner/ip.git","repoName":"ip","organization":"qyaner","domainName":"github"},"branch":"master","displayName":"qyaner/ip[master]","outputFolderName":"qyaner_ip_master"},{"location":{"location":"https://github.com/qz1004/ip.git","repoName":"ip","organization":"qz1004","domainName":"github"},"branch":"master","displayName":"qz1004/ip[master]","outputFolderName":"qz1004_ip_master"},{"location":{"location":"https://github.com/miljyy/ip.git","repoName":"ip","organization":"miljyy","domainName":"github"},"branch":"master","displayName":"miljyy/ip[master]","outputFolderName":"miljyy_ip_master"},{"location":{"location":"https://github.com/yihfei/ip.git","repoName":"ip","organization":"yihfei","domainName":"github"},"branch":"master","displayName":"yihfei/ip[master]","outputFolderName":"yihfei_ip_master"},{"location":{"location":"https://github.com/Gabriel4357/ip.git","repoName":"ip","organization":"Gabriel4357","domainName":"github"},"branch":"master","displayName":"Gabriel4357/ip[master]","outputFolderName":"Gabriel4357_ip_master"},{"location":{"location":"https://github.com/saraozn/ip.git","repoName":"ip","organization":"saraozn","domainName":"github"},"branch":"master","displayName":"saraozn/ip[master]","outputFolderName":"saraozn_ip_master"},{"location":{"location":"https://github.com/JeremyYong128/ip.git","repoName":"ip","organization":"JeremyYong128","domainName":"github"},"branch":"master","displayName":"JeremyYong128/ip[master]","outputFolderName":"JeremyYong128_ip_master"},{"location":{"location":"https://github.com/samuelmui8/ip.git","repoName":"ip","organization":"samuelmui8","domainName":"github"},"branch":"master","displayName":"samuelmui8/ip[master]","outputFolderName":"samuelmui8_ip_master"},{"location":{"location":"https://github.com/elaineshijie/ip.git","repoName":"ip","organization":"elaineshijie","domainName":"github"},"branch":"master","displayName":"elaineshijie/ip[master]","outputFolderName":"elaineshijie_ip_master"},{"location":{"location":"https://github.com/zhengyup/ip.git","repoName":"ip","organization":"zhengyup","domainName":"github"},"branch":"master","displayName":"zhengyup/ip[master]","outputFolderName":"zhengyup_ip_master"},{"location":{"location":"https://github.com/ruishanteo/ip.git","repoName":"ip","organization":"ruishanteo","domainName":"github"},"branch":"master","displayName":"ruishanteo/ip[master]","outputFolderName":"ruishanteo_ip_master"},{"location":{"location":"https://github.com/lynnlow175/ip.git","repoName":"ip","organization":"lynnlow175","domainName":"github"},"branch":"master","displayName":"lynnlow175/ip[master]","outputFolderName":"lynnlow175_ip_master"},{"location":{"location":"https://github.com/kohkaijie/ip.git","repoName":"ip","organization":"kohkaijie","domainName":"github"},"branch":"master","displayName":"kohkaijie/ip[master]","outputFolderName":"kohkaijie_ip_master"},{"location":{"location":"https://github.com/CelestineTan03/ip.git","repoName":"ip","organization":"CelestineTan03","domainName":"github"},"branch":"master","displayName":"CelestineTan03/ip[master]","outputFolderName":"CelestineTan03_ip_master"},{"location":{"location":"https://github.com/PearlynnT/ip.git","repoName":"ip","organization":"PearlynnT","domainName":"github"},"branch":"master","displayName":"PearlynnT/ip[master]","outputFolderName":"PearlynnT_ip_master"},{"location":{"location":"https://github.com/Elijah5399/ip.git","repoName":"ip","organization":"Elijah5399","domainName":"github"},"branch":"master","displayName":"Elijah5399/ip[master]","outputFolderName":"Elijah5399_ip_master"},{"location":{"location":"https://github.com/nicleongyj/ip.git","repoName":"ip","organization":"nicleongyj","domainName":"github"},"branch":"master","displayName":"nicleongyj/ip[master]","outputFolderName":"nicleongyj_ip_master"},{"location":{"location":"https://github.com/AnnabelTing/ip.git","repoName":"ip","organization":"AnnabelTing","domainName":"github"},"branch":"master","displayName":"AnnabelTing/ip[master]","outputFolderName":"AnnabelTing_ip_master"},{"location":{"location":"https://github.com/jrchoo/ip.git","repoName":"ip","organization":"jrchoo","domainName":"github"},"branch":"master","displayName":"jrchoo/ip[master]","outputFolderName":"jrchoo_ip_master"},{"location":{"location":"https://github.com/wujy28/ip.git","repoName":"ip","organization":"wujy28","domainName":"github"},"branch":"master","displayName":"wujy28/ip[master]","outputFolderName":"wujy28_ip_master"},{"location":{"location":"https://github.com/Nauxe/ip.git","repoName":"ip","organization":"Nauxe","domainName":"github"},"branch":"master","displayName":"Nauxe/ip[master]","outputFolderName":"Nauxe_ip_master"},{"location":{"location":"https://github.com/yyyaohhh/ip.git","repoName":"ip","organization":"yyyaohhh","domainName":"github"},"branch":"master","displayName":"yyyaohhh/ip[master]","outputFolderName":"yyyaohhh_ip_master"},{"location":{"location":"https://github.com/xenosf/ip.git","repoName":"ip","organization":"xenosf","domainName":"github"},"branch":"master","displayName":"xenosf/ip[master]","outputFolderName":"xenosf_ip_master"},{"location":{"location":"https://github.com/WinSheng1/ip.git","repoName":"ip","organization":"WinSheng1","domainName":"github"},"branch":"master","displayName":"WinSheng1/ip[master]","outputFolderName":"WinSheng1_ip_master"},{"location":{"location":"https://github.com/nreHieW/ip.git","repoName":"ip","organization":"nreHieW","domainName":"github"},"branch":"master","displayName":"nreHieW/ip[master]","outputFolderName":"nreHieW_ip_master"},{"location":{"location":"https://github.com/peiran18/ip.git","repoName":"ip","organization":"peiran18","domainName":"github"},"branch":"master","displayName":"peiran18/ip[master]","outputFolderName":"peiran18_ip_master"},{"location":{"location":"https://github.com/cheeggered/ip.git","repoName":"ip","organization":"cheeggered","domainName":"github"},"branch":"master","displayName":"cheeggered/ip[master]","outputFolderName":"cheeggered_ip_master"},{"location":{"location":"https://github.com/GohTengFong/ip.git","repoName":"ip","organization":"GohTengFong","domainName":"github"},"branch":"master","displayName":"GohTengFong/ip[master]","outputFolderName":"GohTengFong_ip_master"},{"location":{"location":"https://github.com/jibtaf/ip.git","repoName":"ip","organization":"jibtaf","domainName":"github"},"branch":"master","displayName":"jibtaf/ip[master]","outputFolderName":"jibtaf_ip_master"},{"location":{"location":"https://github.com/bhnuka/ip.git","repoName":"ip","organization":"bhnuka","domainName":"github"},"branch":"master","displayName":"bhnuka/ip[master]","outputFolderName":"bhnuka_ip_master"},{"location":{"location":"https://github.com/laurenlim2112/ip.git","repoName":"ip","organization":"laurenlim2112","domainName":"github"},"branch":"master","displayName":"laurenlim2112/ip[master]","outputFolderName":"laurenlim2112_ip_master"},{"location":{"location":"https://github.com/howenc/ip.git","repoName":"ip","organization":"howenc","domainName":"github"},"branch":"master","displayName":"howenc/ip[master]","outputFolderName":"howenc_ip_master"},{"location":{"location":"https://github.com/Kokseng1/ip.git","repoName":"ip","organization":"Kokseng1","domainName":"github"},"branch":"master","displayName":"Kokseng1/ip[master]","outputFolderName":"Kokseng1_ip_master"},{"location":{"location":"https://github.com/yiwen101/ip.git","repoName":"ip","organization":"yiwen101","domainName":"github"},"branch":"master","displayName":"yiwen101/ip[master]","outputFolderName":"yiwen101_ip_master"},{"location":{"location":"https://github.com/Cikguseven/ip.git","repoName":"ip","organization":"Cikguseven","domainName":"github"},"branch":"master","displayName":"Cikguseven/ip[master]","outputFolderName":"Cikguseven_ip_master"},{"location":{"location":"https://github.com/javinchua/ip.git","repoName":"ip","organization":"javinchua","domainName":"github"},"branch":"master","displayName":"javinchua/ip[master]","outputFolderName":"javinchua_ip_master"},{"location":{"location":"https://github.com/frrrrry/ip.git","repoName":"ip","organization":"frrrrry","domainName":"github"},"branch":"master","displayName":"frrrrry/ip[master]","outputFolderName":"frrrrry_ip_master"},{"location":{"location":"https://github.com/YeoBohShin/ip.git","repoName":"ip","organization":"YeoBohShin","domainName":"github"},"branch":"master","displayName":"YeoBohShin/ip[master]","outputFolderName":"YeoBohShin_ip_master"},{"location":{"location":"https://github.com/yongning0310/ip.git","repoName":"ip","organization":"yongning0310","domainName":"github"},"branch":"master","displayName":"yongning0310/ip[master]","outputFolderName":"yongning0310_ip_master"},{"location":{"location":"https://github.com/SimWPEric/ip.git","repoName":"ip","organization":"SimWPEric","domainName":"github"},"branch":"master","displayName":"SimWPEric/ip[master]","outputFolderName":"SimWPEric_ip_master"},{"location":{"location":"https://github.com/sopa301/ip.git","repoName":"ip","organization":"sopa301","domainName":"github"},"branch":"master","displayName":"sopa301/ip[master]","outputFolderName":"sopa301_ip_master"},{"location":{"location":"https://github.com/nananakx-x/ip.git","repoName":"ip","organization":"nananakx-x","domainName":"github"},"branch":"master","displayName":"nananakx-x/ip[master]","outputFolderName":"nananakx-x_ip_master"},{"location":{"location":"https://github.com/LuoZYi/ip.git","repoName":"ip","organization":"LuoZYi","domainName":"github"},"branch":"master","displayName":"LuoZYi/ip[master]","outputFolderName":"LuoZYi_ip_master"},{"location":{"location":"https://github.com/LinWanLeii/ip.git","repoName":"ip","organization":"LinWanLeii","domainName":"github"},"branch":"master","displayName":"LinWanLeii/ip[master]","outputFolderName":"LinWanLeii_ip_master"},{"location":{"location":"https://github.com/mingyuanc/ip.git","repoName":"ip","organization":"mingyuanc","domainName":"github"},"branch":"master","displayName":"mingyuanc/ip[master]","outputFolderName":"mingyuanc_ip_master"},{"location":{"location":"https://github.com/chonguschonguschongus/ip.git","repoName":"ip","organization":"chonguschonguschongus","domainName":"github"},"branch":"master","displayName":"chonguschonguschongus/ip[master]","outputFolderName":"chonguschonguschongus_ip_master"},{"location":{"location":"https://github.com/yanghengtang/ip.git","repoName":"ip","organization":"yanghengtang","domainName":"github"},"branch":"master","displayName":"yanghengtang/ip[master]","outputFolderName":"yanghengtang_ip_master"},{"location":{"location":"https://github.com/victorpengmx/ip.git","repoName":"ip","organization":"victorpengmx","domainName":"github"},"branch":"master","displayName":"victorpengmx/ip[master]","outputFolderName":"victorpengmx_ip_master"},{"location":{"location":"https://github.com/kanna-1/ip.git","repoName":"ip","organization":"kanna-1","domainName":"github"},"branch":"master","displayName":"kanna-1/ip[master]","outputFolderName":"kanna-1_ip_master"},{"location":{"location":"https://github.com/ncduy0303/ip.git","repoName":"ip","organization":"ncduy0303","domainName":"github"},"branch":"master","displayName":"ncduy0303/ip[master]","outputFolderName":"ncduy0303_ip_master"},{"location":{"location":"https://github.com/jannnice/ip.git","repoName":"ip","organization":"jannnice","domainName":"github"},"branch":"master","displayName":"jannnice/ip[master]","outputFolderName":"jannnice_ip_master"},{"location":{"location":"https://github.com/itssisi/ip.git","repoName":"ip","organization":"itssisi","domainName":"github"},"branch":"master","displayName":"itssisi/ip[master]","outputFolderName":"itssisi_ip_master"},{"location":{"location":"https://github.com/freddychenyouren2/ip.git","repoName":"ip","organization":"freddychenyouren2","domainName":"github"},"branch":"master","displayName":"freddychenyouren2/ip[master]","outputFolderName":"freddychenyouren2_ip_master"},{"location":{"location":"https://github.com/Vanessamae23/ip.git","repoName":"ip","organization":"Vanessamae23","domainName":"github"},"branch":"master","displayName":"Vanessamae23/ip[master]","outputFolderName":"Vanessamae23_ip_master"},{"location":{"location":"https://github.com/cbj252/ip.git","repoName":"ip","organization":"cbj252","domainName":"github"},"branch":"master","displayName":"cbj252/ip[master]","outputFolderName":"cbj252_ip_master"},{"location":{"location":"https://github.com/freshcabbage123/ip.git","repoName":"ip","organization":"freshcabbage123","domainName":"github"},"branch":"master","displayName":"freshcabbage123/ip[master]","outputFolderName":"freshcabbage123_ip_master"},{"location":{"location":"https://github.com/thienmy0/ip.git","repoName":"ip","organization":"thienmy0","domainName":"github"},"branch":"master","displayName":"thienmy0/ip[master]","outputFolderName":"thienmy0_ip_master"},{"location":{"location":"https://github.com/glenngnng/ip.git","repoName":"ip","organization":"glenngnng","domainName":"github"},"branch":"master","displayName":"glenngnng/ip[master]","outputFolderName":"glenngnng_ip_master"},{"location":{"location":"https://github.com/Darren159/ip.git","repoName":"ip","organization":"Darren159","domainName":"github"},"branch":"master","displayName":"Darren159/ip[master]","outputFolderName":"Darren159_ip_master"},{"location":{"location":"https://github.com/J-hta-n/ip.git","repoName":"ip","organization":"J-hta-n","domainName":"github"},"branch":"master","displayName":"J-hta-n/ip[master]","outputFolderName":"J-hta-n_ip_master"},{"location":{"location":"https://github.com/evanyan13/ip.git","repoName":"ip","organization":"evanyan13","domainName":"github"},"branch":"master","displayName":"evanyan13/ip[master]","outputFolderName":"evanyan13_ip_master"},{"location":{"location":"https://github.com/tanveersingh10/ip.git","repoName":"ip","organization":"tanveersingh10","domainName":"github"},"branch":"master","displayName":"tanveersingh10/ip[master]","outputFolderName":"tanveersingh10_ip_master"},{"location":{"location":"https://github.com/neyapraveen/ip.git","repoName":"ip","organization":"neyapraveen","domainName":"github"},"branch":"master","displayName":"neyapraveen/ip[master]","outputFolderName":"neyapraveen_ip_master"},{"location":{"location":"https://github.com/weeweh/ip.git","repoName":"ip","organization":"weeweh","domainName":"github"},"branch":"master","displayName":"weeweh/ip[master]","outputFolderName":"weeweh_ip_master"},{"location":{"location":"https://github.com/HugeNoob/ip.git","repoName":"ip","organization":"HugeNoob","domainName":"github"},"branch":"master","displayName":"HugeNoob/ip[master]","outputFolderName":"HugeNoob_ip_master"},{"location":{"location":"https://github.com/wasjoe1/ip.git","repoName":"ip","organization":"wasjoe1","domainName":"github"},"branch":"master","displayName":"wasjoe1/ip[master]","outputFolderName":"wasjoe1_ip_master"},{"location":{"location":"https://github.com/s-kybound/ip.git","repoName":"ip","organization":"s-kybound","domainName":"github"},"branch":"master","displayName":"s-kybound/ip[master]","outputFolderName":"s-kybound_ip_master"},{"location":{"location":"https://github.com/Singa-pirate/ip.git","repoName":"ip","organization":"Singa-pirate","domainName":"github"},"branch":"master","displayName":"Singa-pirate/ip[master]","outputFolderName":"Singa-pirate_ip_master"},{"location":{"location":"https://github.com/wanghejin/ip.git","repoName":"ip","organization":"wanghejin","domainName":"github"},"branch":"master","displayName":"wanghejin/ip[master]","outputFolderName":"wanghejin_ip_master"},{"location":{"location":"https://github.com/yarnmengnus/ip.git","repoName":"ip","organization":"yarnmengnus","domainName":"github"},"branch":"master","displayName":"yarnmengnus/ip[master]","outputFolderName":"yarnmengnus_ip_master"},{"location":{"location":"https://github.com/Kurtyjlee/ip.git","repoName":"ip","organization":"Kurtyjlee","domainName":"github"},"branch":"master","displayName":"Kurtyjlee/ip[master]","outputFolderName":"Kurtyjlee_ip_master"},{"location":{"location":"https://github.com/jellywaiyan/ip.git","repoName":"ip","organization":"jellywaiyan","domainName":"github"},"branch":"master","displayName":"jellywaiyan/ip[master]","outputFolderName":"jellywaiyan_ip_master"},{"location":{"location":"https://github.com/ylyma/ip.git","repoName":"ip","organization":"ylyma","domainName":"github"},"branch":"master","displayName":"ylyma/ip[master]","outputFolderName":"ylyma_ip_master"},{"location":{"location":"https://github.com/revdrag/ip.git","repoName":"ip","organization":"revdrag","domainName":"github"},"branch":"master","displayName":"revdrag/ip[master]","outputFolderName":"revdrag_ip_master"},{"location":{"location":"https://github.com/vijay-shankaranand/ip.git","repoName":"ip","organization":"vijay-shankaranand","domainName":"github"},"branch":"master","displayName":"vijay-shankaranand/ip[master]","outputFolderName":"vijay-shankaranand_ip_master"},{"location":{"location":"https://github.com/lerxuann/ip.git","repoName":"ip","organization":"lerxuann","domainName":"github"},"branch":"master","displayName":"lerxuann/ip[master]","outputFolderName":"lerxuann_ip_master"},{"location":{"location":"https://github.com/yuxunn/ip.git","repoName":"ip","organization":"yuxunn","domainName":"github"},"branch":"master","displayName":"yuxunn/ip[master]","outputFolderName":"yuxunn_ip_master"},{"location":{"location":"https://github.com/zannloo/ip.git","repoName":"ip","organization":"zannloo","domainName":"github"},"branch":"master","displayName":"zannloo/ip[master]","outputFolderName":"zannloo_ip_master"},{"location":{"location":"https://github.com/AryanG01/ip.git","repoName":"ip","organization":"AryanG01","domainName":"github"},"branch":"master","displayName":"AryanG01/ip[master]","outputFolderName":"AryanG01_ip_master"},{"location":{"location":"https://github.com/oeggy03/ip.git","repoName":"ip","organization":"oeggy03","domainName":"github"},"branch":"master","displayName":"oeggy03/ip[master]","outputFolderName":"oeggy03_ip_master"},{"location":{"location":"https://github.com/jeffrey-jian/ip.git","repoName":"ip","organization":"jeffrey-jian","domainName":"github"},"branch":"master","displayName":"jeffrey-jian/ip[master]","outputFolderName":"jeffrey-jian_ip_master"},{"location":{"location":"https://github.com/nicholastng010601/ip.git","repoName":"ip","organization":"nicholastng010601","domainName":"github"},"branch":"master","displayName":"nicholastng010601/ip[master]","outputFolderName":"nicholastng010601_ip_master"},{"location":{"location":"https://github.com/Weiennn/ip.git","repoName":"ip","organization":"Weiennn","domainName":"github"},"branch":"master","displayName":"Weiennn/ip[master]","outputFolderName":"Weiennn_ip_master"},{"location":{"location":"https://github.com/tayruxin/ip.git","repoName":"ip","organization":"tayruxin","domainName":"github"},"branch":"master","displayName":"tayruxin/ip[master]","outputFolderName":"tayruxin_ip_master"},{"location":{"location":"https://github.com/xyT-T/ip.git","repoName":"ip","organization":"xyT-T","domainName":"github"},"branch":"master","displayName":"xyT-T/ip[master]","outputFolderName":"xyT-T_ip_master"},{"location":{"location":"https://github.com/lunaroddity/ip.git","repoName":"ip","organization":"lunaroddity","domainName":"github"},"branch":"master","displayName":"lunaroddity/ip[master]","outputFolderName":"lunaroddity_ip_master"},{"location":{"location":"https://github.com/nabonitasen/ip.git","repoName":"ip","organization":"nabonitasen","domainName":"github"},"branch":"master","displayName":"nabonitasen/ip[master]","outputFolderName":"nabonitasen_ip_master"},{"location":{"location":"https://github.com/inezkok/ip.git","repoName":"ip","organization":"inezkok","domainName":"github"},"branch":"master","displayName":"inezkok/ip[master]","outputFolderName":"inezkok_ip_master"},{"location":{"location":"https://github.com/nknguyenhc/ip.git","repoName":"ip","organization":"nknguyenhc","domainName":"github"},"branch":"master","displayName":"nknguyenhc/ip[master]","outputFolderName":"nknguyenhc_ip_master"},{"location":{"location":"https://github.com/keaganpzh/ip.git","repoName":"ip","organization":"keaganpzh","domainName":"github"},"branch":"master","displayName":"keaganpzh/ip[master]","outputFolderName":"keaganpzh_ip_master"},{"location":{"location":"https://github.com/lululwtv/ip.git","repoName":"ip","organization":"lululwtv","domainName":"github"},"branch":"master","displayName":"lululwtv/ip[master]","outputFolderName":"lululwtv_ip_master"},{"location":{"location":"https://github.com/hcs1203/ip.git","repoName":"ip","organization":"hcs1203","domainName":"github"},"branch":"master","displayName":"hcs1203/ip[master]","outputFolderName":"hcs1203_ip_master"},{"location":{"location":"https://github.com/migfoo02/ip.git","repoName":"ip","organization":"migfoo02","domainName":"github"},"branch":"master","displayName":"migfoo02/ip[master]","outputFolderName":"migfoo02_ip_master"},{"location":{"location":"https://github.com/papataco14/ip.git","repoName":"ip","organization":"papataco14","domainName":"github"},"branch":"master","displayName":"papataco14/ip[master]","outputFolderName":"papataco14_ip_master"},{"location":{"location":"https://github.com/coderhuang559/ip.git","repoName":"ip","organization":"coderhuang559","domainName":"github"},"branch":"master","displayName":"coderhuang559/ip[master]","outputFolderName":"coderhuang559_ip_master"},{"location":{"location":"https://github.com/craigtonlian/ip.git","repoName":"ip","organization":"craigtonlian","domainName":"github"},"branch":"master","displayName":"craigtonlian/ip[master]","outputFolderName":"craigtonlian_ip_master"},{"location":{"location":"https://github.com/adammangzijun/ip.git","repoName":"ip","organization":"adammangzijun","domainName":"github"},"branch":"master","displayName":"adammangzijun/ip[master]","outputFolderName":"adammangzijun_ip_master"},{"location":{"location":"https://github.com/AlainS87/ip.git","repoName":"ip","organization":"AlainS87","domainName":"github"},"branch":"master","displayName":"AlainS87/ip[master]","outputFolderName":"AlainS87_ip_master"},{"location":{"location":"https://github.com/tanyyyming/ip.git","repoName":"ip","organization":"tanyyyming","domainName":"github"},"branch":"master","displayName":"tanyyyming/ip[master]","outputFolderName":"tanyyyming_ip_master"},{"location":{"location":"https://github.com/Saezenn/ip.git","repoName":"ip","organization":"Saezenn","domainName":"github"},"branch":"master","displayName":"Saezenn/ip[master]","outputFolderName":"Saezenn_ip_master"},{"location":{"location":"https://github.com/kayabuttertoastt/ip.git","repoName":"ip","organization":"kayabuttertoastt","domainName":"github"},"branch":"master","displayName":"kayabuttertoastt/ip[master]","outputFolderName":"kayabuttertoastt_ip_master"},{"location":{"location":"https://github.com/limjunxian1/ip.git","repoName":"ip","organization":"limjunxian1","domainName":"github"},"branch":"master","displayName":"limjunxian1/ip[master]","outputFolderName":"limjunxian1_ip_master"},{"location":{"location":"https://github.com/andrechuakj/ip.git","repoName":"ip","organization":"andrechuakj","domainName":"github"},"branch":"master","displayName":"andrechuakj/ip[master]","outputFolderName":"andrechuakj_ip_master"},{"location":{"location":"https://github.com/kwangthiag/ip.git","repoName":"ip","organization":"kwangthiag","domainName":"github"},"branch":"master","displayName":"kwangthiag/ip[master]","outputFolderName":"kwangthiag_ip_master"},{"location":{"location":"https://github.com/ricketytoc/ip.git","repoName":"ip","organization":"ricketytoc","domainName":"github"},"branch":"master","displayName":"ricketytoc/ip[master]","outputFolderName":"ricketytoc_ip_master"},{"location":{"location":"https://github.com/applepiofmyeye/ip.git","repoName":"ip","organization":"applepiofmyeye","domainName":"github"},"branch":"master","displayName":"applepiofmyeye/ip[master]","outputFolderName":"applepiofmyeye_ip_master"},{"location":{"location":"https://github.com/nubnubyas/ip.git","repoName":"ip","organization":"nubnubyas","domainName":"github"},"branch":"master","displayName":"nubnubyas/ip[master]","outputFolderName":"nubnubyas_ip_master"},{"location":{"location":"https://github.com/WeeeHung/ip.git","repoName":"ip","organization":"WeeeHung","domainName":"github"},"branch":"master","displayName":"WeeeHung/ip[master]","outputFolderName":"WeeeHung_ip_master"},{"location":{"location":"https://github.com/Eola-Z/ip.git","repoName":"ip","organization":"Eola-Z","domainName":"github"},"branch":"master","displayName":"Eola-Z/ip[master]","outputFolderName":"Eola-Z_ip_master"},{"location":{"location":"https://github.com/jordankanghm/ip.git","repoName":"ip","organization":"jordankanghm","domainName":"github"},"branch":"master","displayName":"jordankanghm/ip[master]","outputFolderName":"jordankanghm_ip_master"},{"location":{"location":"https://github.com/zacwong2151/ip.git","repoName":"ip","organization":"zacwong2151","domainName":"github"},"branch":"master","displayName":"zacwong2151/ip[master]","outputFolderName":"zacwong2151_ip_master"},{"location":{"location":"https://github.com/m1oojv/ip.git","repoName":"ip","organization":"m1oojv","domainName":"github"},"branch":"master","displayName":"m1oojv/ip[master]","outputFolderName":"m1oojv_ip_master"},{"location":{"location":"https://github.com/JCSnap/ip.git","repoName":"ip","organization":"JCSnap","domainName":"github"},"branch":"master","displayName":"JCSnap/ip[master]","outputFolderName":"JCSnap_ip_master"},{"location":{"location":"https://github.com/Nid21cs/ip.git","repoName":"ip","organization":"Nid21cs","domainName":"github"},"branch":"master","displayName":"Nid21cs/ip[master]","outputFolderName":"Nid21cs_ip_master"},{"location":{"location":"https://github.com/mfjkri/ip.git","repoName":"ip","organization":"mfjkri","domainName":"github"},"branch":"master","displayName":"mfjkri/ip[master]","outputFolderName":"mfjkri_ip_master"},{"location":{"location":"https://github.com/Choonyan02/ip.git","repoName":"ip","organization":"Choonyan02","domainName":"github"},"branch":"master","displayName":"Choonyan02/ip[master]","outputFolderName":"Choonyan02_ip_master"},{"location":{"location":"https://github.com/rayyan35p/ip.git","repoName":"ip","organization":"rayyan35p","domainName":"github"},"branch":"master","displayName":"rayyan35p/ip[master]","outputFolderName":"rayyan35p_ip_master"},{"location":{"location":"https://github.com/dhruvir29/ip.git","repoName":"ip","organization":"dhruvir29","domainName":"github"},"branch":"master","displayName":"dhruvir29/ip[master]","outputFolderName":"dhruvir29_ip_master"},{"location":{"location":"https://github.com/Mohammed-Faizzzz/ip.git","repoName":"ip","organization":"Mohammed-Faizzzz","domainName":"github"},"branch":"master","displayName":"Mohammed-Faizzzz/ip[master]","outputFolderName":"Mohammed-Faizzzz_ip_master"},{"location":{"location":"https://github.com/ruo-x/ip.git","repoName":"ip","organization":"ruo-x","domainName":"github"},"branch":"master","displayName":"ruo-x/ip[master]","outputFolderName":"ruo-x_ip_master"},{"location":{"location":"https://github.com/DonovanJJ/ip.git","repoName":"ip","organization":"DonovanJJ","domainName":"github"},"branch":"master","displayName":"DonovanJJ/ip[master]","outputFolderName":"DonovanJJ_ip_master"},{"location":{"location":"https://github.com/kristayeo/ip.git","repoName":"ip","organization":"kristayeo","domainName":"github"},"branch":"master","displayName":"kristayeo/ip[master]","outputFolderName":"kristayeo_ip_master"},{"location":{"location":"https://github.com/ZD292/ip.git","repoName":"ip","organization":"ZD292","domainName":"github"},"branch":"master","displayName":"ZD292/ip[master]","outputFolderName":"ZD292_ip_master"},{"location":{"location":"https://github.com/jingjie88/ip.git","repoName":"ip","organization":"jingjie88","domainName":"github"},"branch":"master","displayName":"jingjie88/ip[master]","outputFolderName":"jingjie88_ip_master"},{"location":{"location":"https://github.com/iantsaii/ip.git","repoName":"ip","organization":"iantsaii","domainName":"github"},"branch":"master","displayName":"iantsaii/ip[master]","outputFolderName":"iantsaii_ip_master"},{"location":{"location":"https://github.com/jingting1412/ip.git","repoName":"ip","organization":"jingting1412","domainName":"github"},"branch":"master","displayName":"jingting1412/ip[master]","outputFolderName":"jingting1412_ip_master"},{"location":{"location":"https://github.com/wnchan/ip.git","repoName":"ip","organization":"wnchan","domainName":"github"},"branch":"master","displayName":"wnchan/ip[master]","outputFolderName":"wnchan_ip_master"},{"location":{"location":"https://github.com/jack1e0/ip.git","repoName":"ip","organization":"jack1e0","domainName":"github"},"branch":"master","displayName":"jack1e0/ip[master]","outputFolderName":"jack1e0_ip_master"},{"location":{"location":"https://github.com/mingyu-wan/ip.git","repoName":"ip","organization":"mingyu-wan","domainName":"github"},"branch":"master","displayName":"mingyu-wan/ip[master]","outputFolderName":"mingyu-wan_ip_master"},{"location":{"location":"https://github.com/nicolengk/ip.git","repoName":"ip","organization":"nicolengk","domainName":"github"},"branch":"master","displayName":"nicolengk/ip[master]","outputFolderName":"nicolengk_ip_master"},{"location":{"location":"https://github.com/cyaoxuan/ip.git","repoName":"ip","organization":"cyaoxuan","domainName":"github"},"branch":"master","displayName":"cyaoxuan/ip[master]","outputFolderName":"cyaoxuan_ip_master"},{"location":{"location":"https://github.com/sunzihan23/ip.git","repoName":"ip","organization":"sunzihan23","domainName":"github"},"branch":"master","displayName":"sunzihan23/ip[master]","outputFolderName":"sunzihan23_ip_master"},{"location":{"location":"https://github.com/Goh-Li-Ting/ip.git","repoName":"ip","organization":"Goh-Li-Ting","domainName":"github"},"branch":"master","displayName":"Goh-Li-Ting/ip[master]","outputFolderName":"Goh-Li-Ting_ip_master"},{"location":{"location":"https://github.com/wjayee/ip.git","repoName":"ip","organization":"wjayee","domainName":"github"},"branch":"master","displayName":"wjayee/ip[master]","outputFolderName":"wjayee_ip_master"},{"location":{"location":"https://github.com/fuyiqiao/ip.git","repoName":"ip","organization":"fuyiqiao","domainName":"github"},"branch":"master","displayName":"fuyiqiao/ip[master]","outputFolderName":"fuyiqiao_ip_master"},{"location":{"location":"https://github.com/GlendaChong/ip.git","repoName":"ip","organization":"GlendaChong","domainName":"github"},"branch":"master","displayName":"GlendaChong/ip[master]","outputFolderName":"GlendaChong_ip_master"},{"location":{"location":"https://github.com/hyc17003/ip.git","repoName":"ip","organization":"hyc17003","domainName":"github"},"branch":"master","displayName":"hyc17003/ip[master]","outputFolderName":"hyc17003_ip_master"},{"location":{"location":"https://github.com/spatuly/ip.git","repoName":"ip","organization":"spatuly","domainName":"github"},"branch":"master","displayName":"spatuly/ip[master]","outputFolderName":"spatuly_ip_master"},{"location":{"location":"https://github.com/tanteckfang/ip.git","repoName":"ip","organization":"tanteckfang","domainName":"github"},"branch":"master","displayName":"tanteckfang/ip[master]","outputFolderName":"tanteckfang_ip_master"},{"location":{"location":"https://github.com/Clin-lyx/ip.git","repoName":"ip","organization":"Clin-lyx","domainName":"github"},"branch":"master","displayName":"Clin-lyx/ip[master]","outputFolderName":"Clin-lyx_ip_master"},{"location":{"location":"https://github.com/lyuanww/ip.git","repoName":"ip","organization":"lyuanww","domainName":"github"},"branch":"master","displayName":"lyuanww/ip[master]","outputFolderName":"lyuanww_ip_master"},{"location":{"location":"https://github.com/LimJH2002/ip.git","repoName":"ip","organization":"LimJH2002","domainName":"github"},"branch":"master","displayName":"LimJH2002/ip[master]","outputFolderName":"LimJH2002_ip_master"},{"location":{"location":"https://github.com/LWZ19/ip.git","repoName":"ip","organization":"LWZ19","domainName":"github"},"branch":"master","displayName":"LWZ19/ip[master]","outputFolderName":"LWZ19_ip_master"},{"location":{"location":"https://github.com/Gavino3o/ip.git","repoName":"ip","organization":"Gavino3o","domainName":"github"},"branch":"master","displayName":"Gavino3o/ip[master]","outputFolderName":"Gavino3o_ip_master"},{"location":{"location":"https://github.com/suryanshkushwaha/ip.git","repoName":"ip","organization":"suryanshkushwaha","domainName":"github"},"branch":"master","displayName":"suryanshkushwaha/ip[master]","outputFolderName":"suryanshkushwaha_ip_master"},{"location":{"location":"https://github.com/JasonRay168/ip.git","repoName":"ip","organization":"JasonRay168","domainName":"github"},"branch":"master","displayName":"JasonRay168/ip[master]","outputFolderName":"JasonRay168_ip_master"},{"location":{"location":"https://github.com/jovkusuma/ip.git","repoName":"ip","organization":"jovkusuma","domainName":"github"},"branch":"master","displayName":"jovkusuma/ip[master]","outputFolderName":"jovkusuma_ip_master"},{"location":{"location":"https://github.com/Chrainx/ip.git","repoName":"ip","organization":"Chrainx","domainName":"github"},"branch":"master","displayName":"Chrainx/ip[master]","outputFolderName":"Chrainx_ip_master"},{"location":{"location":"https://github.com/Propene-Dan/ip.git","repoName":"ip","organization":"Propene-Dan","domainName":"github"},"branch":"master","displayName":"Propene-Dan/ip[master]","outputFolderName":"Propene-Dan_ip_master"},{"location":{"location":"https://github.com/Daphne789/ip.git","repoName":"ip","organization":"Daphne789","domainName":"github"},"branch":"master","displayName":"Daphne789/ip[master]","outputFolderName":"Daphne789_ip_master"},{"location":{"location":"https://github.com/ChuanXinNg/ip.git","repoName":"ip","organization":"ChuanXinNg","domainName":"github"},"branch":"master","displayName":"ChuanXinNg/ip[master]","outputFolderName":"ChuanXinNg_ip_master"},{"location":{"location":"https://github.com/LHeng1/ip.git","repoName":"ip","organization":"LHeng1","domainName":"github"},"branch":"master","displayName":"LHeng1/ip[master]","outputFolderName":"LHeng1_ip_master"},{"location":{"location":"https://github.com/wr1159/ip.git","repoName":"ip","organization":"wr1159","domainName":"github"},"branch":"master","displayName":"wr1159/ip[master]","outputFolderName":"wr1159_ip_master"},{"location":{"location":"https://github.com/wjacobw/ip.git","repoName":"ip","organization":"wjacobw","domainName":"github"},"branch":"master","displayName":"wjacobw/ip[master]","outputFolderName":"wjacobw_ip_master"},{"location":{"location":"https://github.com/tiongjjyi/ip.git","repoName":"ip","organization":"tiongjjyi","domainName":"github"},"branch":"master","displayName":"tiongjjyi/ip[master]","outputFolderName":"tiongjjyi_ip_master"},{"location":{"location":"https://github.com/longnguyentan/ip.git","repoName":"ip","organization":"longnguyentan","domainName":"github"},"branch":"master","displayName":"longnguyentan/ip[master]","outputFolderName":"longnguyentan_ip_master"},{"location":{"location":"https://github.com/proto-aiken-13/ip.git","repoName":"ip","organization":"proto-aiken-13","domainName":"github"},"branch":"master","displayName":"proto-aiken-13/ip[master]","outputFolderName":"proto-aiken-13_ip_master"},{"location":{"location":"https://github.com/junnengsoo/ip.git","repoName":"ip","organization":"junnengsoo","domainName":"github"},"branch":"master","displayName":"junnengsoo/ip[master]","outputFolderName":"junnengsoo_ip_master"},{"location":{"location":"https://github.com/yezkez10/ip.git","repoName":"ip","organization":"yezkez10","domainName":"github"},"branch":"master","displayName":"yezkez10/ip[master]","outputFolderName":"yezkez10_ip_master"},{"location":{"location":"https://github.com/jamesebond/ip.git","repoName":"ip","organization":"jamesebond","domainName":"github"},"branch":"master","displayName":"jamesebond/ip[master]","outputFolderName":"jamesebond_ip_master"},{"location":{"location":"https://github.com/alyssaongyx/ip.git","repoName":"ip","organization":"alyssaongyx","domainName":"github"},"branch":"master","displayName":"alyssaongyx/ip[master]","outputFolderName":"alyssaongyx_ip_master"},{"location":{"location":"https://github.com/Carlintyj/ip.git","repoName":"ip","organization":"Carlintyj","domainName":"github"},"branch":"master","displayName":"Carlintyj/ip[master]","outputFolderName":"Carlintyj_ip_master"},{"location":{"location":"https://github.com/ruth-lim/ip.git","repoName":"ip","organization":"ruth-lim","domainName":"github"},"branch":"master","displayName":"ruth-lim/ip[master]","outputFolderName":"ruth-lim_ip_master"},{"location":{"location":"https://github.com/licongshen12/ip.git","repoName":"ip","organization":"licongshen12","domainName":"github"},"branch":"master","displayName":"licongshen12/ip[master]","outputFolderName":"licongshen12_ip_master"},{"location":{"location":"https://github.com/thaddeusong/ip.git","repoName":"ip","organization":"thaddeusong","domainName":"github"},"branch":"master","displayName":"thaddeusong/ip[master]","outputFolderName":"thaddeusong_ip_master"},{"location":{"location":"https://github.com/LordSaumya/ip.git","repoName":"ip","organization":"LordSaumya","domainName":"github"},"branch":"master","displayName":"LordSaumya/ip[master]","outputFolderName":"LordSaumya_ip_master"},{"location":{"location":"https://github.com/Kevin-Liusx/ip.git","repoName":"ip","organization":"Kevin-Liusx","domainName":"github"},"branch":"master","displayName":"Kevin-Liusx/ip[master]","outputFolderName":"Kevin-Liusx_ip_master"},{"location":{"location":"https://github.com/Ken-Lai/ip.git","repoName":"ip","organization":"Ken-Lai","domainName":"github"},"branch":"master","displayName":"Ken-Lai/ip[master]","outputFolderName":"Ken-Lai_ip_master"},{"location":{"location":"https://github.com/KumChaiYin/ip.git","repoName":"ip","organization":"KumChaiYin","domainName":"github"},"branch":"master","displayName":"KumChaiYin/ip[master]","outputFolderName":"KumChaiYin_ip_master"},{"location":{"location":"https://github.com/pzl111/ip.git","repoName":"ip","organization":"pzl111","domainName":"github"},"branch":"master","displayName":"pzl111/ip[master]","outputFolderName":"pzl111_ip_master"},{"location":{"location":"https://github.com/alientian/ip.git","repoName":"ip","organization":"alientian","domainName":"github"},"branch":"master","displayName":"alientian/ip[master]","outputFolderName":"alientian_ip_master"},{"location":{"location":"https://github.com/eyelessrhyme7/ip.git","repoName":"ip","organization":"eyelessrhyme7","domainName":"github"},"branch":"master","displayName":"eyelessrhyme7/ip[master]","outputFolderName":"eyelessrhyme7_ip_master"},{"location":{"location":"https://github.com/AprupKale/ip.git","repoName":"ip","organization":"AprupKale","domainName":"github"},"branch":"master","displayName":"AprupKale/ip[master]","outputFolderName":"AprupKale_ip_master"},{"location":{"location":"https://github.com/kimshitong/ip.git","repoName":"ip","organization":"kimshitong","domainName":"github"},"branch":"master","displayName":"kimshitong/ip[master]","outputFolderName":"kimshitong_ip_master"},{"location":{"location":"https://github.com/Bryan-Goh/ip.git","repoName":"ip","organization":"Bryan-Goh","domainName":"github"},"branch":"master","displayName":"Bryan-Goh/ip[master]","outputFolderName":"Bryan-Goh_ip_master"},{"location":{"location":"https://github.com/tiif/ip.git","repoName":"ip","organization":"tiif","domainName":"github"},"branch":"master","displayName":"tiif/ip[master]","outputFolderName":"tiif_ip_master"},{"location":{"location":"https://github.com/angkyakdifp/ip.git","repoName":"ip","organization":"angkyakdifp","domainName":"github"},"branch":"master","displayName":"angkyakdifp/ip[master]","outputFolderName":"angkyakdifp_ip_master"},{"location":{"location":"https://github.com/Chen-Kuei/ip.git","repoName":"ip","organization":"Chen-Kuei","domainName":"github"},"branch":"master","displayName":"Chen-Kuei/ip[master]","outputFolderName":"Chen-Kuei_ip_master"},{"location":{"location":"https://github.com/SinhaVedant/ip.git","repoName":"ip","organization":"SinhaVedant","domainName":"github"},"branch":"master","displayName":"SinhaVedant/ip[master]","outputFolderName":"SinhaVedant_ip_master"},{"location":{"location":"https://github.com/D-Limiter/ip.git","repoName":"ip","organization":"D-Limiter","domainName":"github"},"branch":"master","displayName":"D-Limiter/ip[master]","outputFolderName":"D-Limiter_ip_master"},{"location":{"location":"https://github.com/larrywang0701/ip.git","repoName":"ip","organization":"larrywang0701","domainName":"github"},"branch":"master","displayName":"larrywang0701/ip[master]","outputFolderName":"larrywang0701_ip_master"},{"location":{"location":"https://github.com/Song-Mengfei/ip.git","repoName":"ip","organization":"Song-Mengfei","domainName":"github"},"branch":"master","displayName":"Song-Mengfei/ip[master]","outputFolderName":"Song-Mengfei_ip_master"},{"location":{"location":"https://github.com/ChangruHenryQian/ip.git","repoName":"ip","organization":"ChangruHenryQian","domainName":"github"},"branch":"master","displayName":"ChangruHenryQian/ip[master]","outputFolderName":"ChangruHenryQian_ip_master"},{"location":{"location":"https://github.com/ketweeen/ip.git","repoName":"ip","organization":"ketweeen","domainName":"github"},"branch":"master","displayName":"ketweeen/ip[master]","outputFolderName":"ketweeen_ip_master"},{"location":{"location":"https://github.com/RSXIX/ip.git","repoName":"ip","organization":"RSXIX","domainName":"github"},"branch":"master","displayName":"RSXIX/ip[master]","outputFolderName":"RSXIX_ip_master"},{"location":{"location":"https://github.com/songgthu/ip.git","repoName":"ip","organization":"songgthu","domainName":"github"},"branch":"master","displayName":"songgthu/ip[master]","outputFolderName":"songgthu_ip_master"},{"location":{"location":"https://github.com/maj0-0/ip.git","repoName":"ip","organization":"maj0-0","domainName":"github"},"branch":"master","displayName":"maj0-0/ip[master]","outputFolderName":"maj0-0_ip_master"},{"location":{"location":"https://github.com/tiongMax/ip.git","repoName":"ip","organization":"tiongMax","domainName":"github"},"branch":"master","displayName":"tiongMax/ip[master]","outputFolderName":"tiongMax_ip_master"},{"location":{"location":"https://github.com/A1WAYSD/ip.git","repoName":"ip","organization":"A1WAYSD","domainName":"github"},"branch":"master","displayName":"A1WAYSD/ip[master]","outputFolderName":"A1WAYSD_ip_master"},{"location":{"location":"https://github.com/hjoneweek/ip.git","repoName":"ip","organization":"hjoneweek","domainName":"github"},"branch":"master","displayName":"hjoneweek/ip[master]","outputFolderName":"hjoneweek_ip_master"},{"location":{"location":"https://github.com/itsNatTan/ip.git","repoName":"ip","organization":"itsNatTan","domainName":"github"},"branch":"master","displayName":"itsNatTan/ip[master]","outputFolderName":"itsNatTan_ip_master"},{"location":{"location":"https://github.com/AustinHuang1203/ip.git","repoName":"ip","organization":"AustinHuang1203","domainName":"github"},"branch":"master","displayName":"AustinHuang1203/ip[master]","outputFolderName":"AustinHuang1203_ip_master"},{"location":{"location":"https://github.com/WangCheng0116/ip.git","repoName":"ip","organization":"WangCheng0116","domainName":"github"},"branch":"master","displayName":"WangCheng0116/ip[master]","outputFolderName":"WangCheng0116_ip_master"},{"location":{"location":"https://github.com/Tim-Siu/ip.git","repoName":"ip","organization":"Tim-Siu","domainName":"github"},"branch":"master","displayName":"Tim-Siu/ip[master]","outputFolderName":"Tim-Siu_ip_master"},{"location":{"location":"https://github.com/newway1814/ip.git","repoName":"ip","organization":"newway1814","domainName":"github"},"branch":"master","displayName":"newway1814/ip[master]","outputFolderName":"newway1814_ip_master"},{"location":{"location":"https://github.com/li-rongzhi/ip.git","repoName":"ip","organization":"li-rongzhi","domainName":"github"},"branch":"master","displayName":"li-rongzhi/ip[master]","outputFolderName":"li-rongzhi_ip_master"},{"location":{"location":"https://github.com/adhigop13/ip.git","repoName":"ip","organization":"adhigop13","domainName":"github"},"branch":"master","displayName":"adhigop13/ip[master]","outputFolderName":"adhigop13_ip_master"},{"location":{"location":"https://github.com/MadLamprey/ip.git","repoName":"ip","organization":"MadLamprey","domainName":"github"},"branch":"master","displayName":"MadLamprey/ip[master]","outputFolderName":"MadLamprey_ip_master"}],"errorSet":[],"sinceDate":"2023-08-18","untilDate":"2023-09-26","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/thaddeusong_ip_master/authorship.json b/thaddeusong_ip_master/authorship.json index ed7bcd2e..4faafa71 100644 --- a/thaddeusong_ip_master/authorship.json +++ b/thaddeusong_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"## Duke Project","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"\u003e Beware the stories you read or tell; subtly, at night, beneath the waters of consciousness, they are altering your world. - [Ben Okri](https://en.wikipedia.org/wiki/Ben_Okri)","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"This project is","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"- **Text**-based","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"- *Easy* to use","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"This project helps you to:","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"1. Track tasks","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"2. Stay on target","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"3. Practise programming","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":":+1:","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":"Features:","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"- [x] Managing tasks","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"- [ ] Managing deadlines (coming soon)","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":"\u003e If you Java programmer, you can use it to practice Java too. Here\u0027s the main method:","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":"```java","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":"public class Main {","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"thaddeusong":25,"-":5}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2023-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"checkstyle {","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" implementation \u0027org.jetbrains:annotations:23.0.0\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2023-08-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-08-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2023-08-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-08-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2023-08-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2023-08-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-08-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2023-08-05"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" mainClass.set(\"duke.duke.Duke\")","lastModifiedDate":"2023-09-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2023-08-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2023-08-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2023-08-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2023-08-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2023-08-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"}],"authorContributionMap":{"thaddeusong":22,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"# Iris User Guide","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"## Adding Tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"Different types of tasks can be added.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"### Usage","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"### `todo` - Adds a todo task. ","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"Example of usage: ","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":"`todo (name of task)`","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":"Adds a task with the given name.","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":"added: [T][] name","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":"`todo (name of task)`","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":"Adds a todo task with the given name.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":"added: [T][] name","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":"\u003chr /\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":"### `deadline` - Adds a deadline task.","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":"`deadline (name of task)/by (year-month-day) (time)`","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":"Adds a deadline task with the given name.","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":"added: [D][] name (by:date,time)","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":"\u003chr /\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":"### `event` - Adds a event task.","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":"`event (name of task)/from (start date) (time)/to (end date) (time)`","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":"Adds a deadline task with the given name.","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":"added: [E][ ] name (from: date,time to: date,time)","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":"\u003chr /\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":"## Listing Tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":"### `list` - List the tasks saved","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":"`list`","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":"Lists out all the tasks saved in the bot","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":"1. Task 1","lastModifiedDate":"2023-09-25"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":"2. Task 2","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":"...","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":"There are n tasks in the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":"\u003chr /\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":"## Deleting Tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":"### `delete` - Delete a task from the list","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":"`delete 1`","lastModifiedDate":"2023-09-25"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":"Deletes the task at the given index","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":"I\u0027ve removed this task:","lastModifiedDate":"2023-09-25"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":"[T][] name","lastModifiedDate":"2023-09-25"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":"## Marking Tasks As Done","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":"### `mark` - Marks a task as done","lastModifiedDate":"2023-09-25"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":"Marked tasks are ticked with an X in their entry.","lastModifiedDate":"2023-09-25"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":"`mark 1`","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":112,"author":{"gitId":"thaddeusong"},"content":"Marks the task at the given index as done","lastModifiedDate":"2023-09-25"},{"lineNumber":113,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":114,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":115,"author":{"gitId":"thaddeusong"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-25"},{"lineNumber":116,"author":{"gitId":"thaddeusong"},"content":"[T][X] name","lastModifiedDate":"2023-09-25"},{"lineNumber":117,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":118,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":119,"author":{"gitId":"thaddeusong"},"content":"### `unmark` - Unmarks a task as done","lastModifiedDate":"2023-09-25"},{"lineNumber":120,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":121,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":122,"author":{"gitId":"thaddeusong"},"content":"`unmark 1`","lastModifiedDate":"2023-09-25"},{"lineNumber":123,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":124,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":125,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":126,"author":{"gitId":"thaddeusong"},"content":"Unmarks the task at the given index","lastModifiedDate":"2023-09-25"},{"lineNumber":127,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":128,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":129,"author":{"gitId":"thaddeusong"},"content":"OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-09-25"},{"lineNumber":130,"author":{"gitId":"thaddeusong"},"content":"[T][] name","lastModifiedDate":"2023-09-25"},{"lineNumber":131,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":132,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":133,"author":{"gitId":"thaddeusong"},"content":"\u003chr /\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":135,"author":{"gitId":"thaddeusong"},"content":"## Exiting The Bot","lastModifiedDate":"2023-09-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":137,"author":{"gitId":"thaddeusong"},"content":"### \u0027bye\u0027 - Exits the bot","lastModifiedDate":"2023-09-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":140,"author":{"gitId":"thaddeusong"},"content":"\u0027bye\u0027","lastModifiedDate":"2023-09-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":144,"author":{"gitId":"thaddeusong"},"content":"Exits the bot","lastModifiedDate":"2023-09-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":147,"author":{"gitId":"thaddeusong"},"content":"Bye, hope to see you again soon!","lastModifiedDate":"2023-09-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"thaddeusong":128,"-":20}},{"path":"src/main/java/duke/application/Application.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.application;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.util.concurrent.Executors;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import java.util.concurrent.ScheduledExecutorService;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import java.util.concurrent.TimeUnit;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DuplicateTaskException;","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"import duke.message.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" * The application that manages UI and the taskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":"public class Application extends javafx.application.Application {","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" private static final String name \u003d \"Iris\";","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" private static final String filePath \u003d \"C:\\\\Users\\\\ortt2\\\\Documents\\\\ip\\\\src\\\\data\\\\tasks.txt\";","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" private TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" private Ui ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" private Storage storage \u003d null;","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" * Shuts down application.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" public void kill() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" saveTaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" ScheduledExecutorService executor \u003d Executors.newScheduledThreadPool(1);","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" executor.schedule(() -\u003e Platform.runLater(ui::closeGui), 1, TimeUnit.SECONDS);","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" * Adds a task to the application\u0027s task list and storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" public void addTask(Task task) throws DuplicateTaskException {","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" * Removes a task from the application\u0027s task list and storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" * @param task The task to be removed.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" public void removeTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" taskList.removeTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" * Loads the task list from storage into the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If there\u0027s an issue with loading tasks from storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" public void loadTaskList() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" int currentLine \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" while (!(line \u003d storage.getLine(currentLine)).equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" taskList.addTask(Task.parse(line));","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" currentLine++;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" * Saves the task list into storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" public void saveTaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" storage.clear();","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" for (int i \u003d 0; i \u003c getTaskCount(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" Task task \u003d taskList.getTask(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" storage.addLine(task.toSaveFormat());","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" * Returns the number of tasks in the application\u0027s task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" * @return The number of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" return taskList.getTaskCount();","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":" * Retrieves a task from the application\u0027s task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":" return taskList.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":" return taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":" * Retrieves a TaskList containing all the tasks that contain a substring.","lastModifiedDate":"2023-09-05"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":" * @param content The substring to search for.","lastModifiedDate":"2023-09-05"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":" * @return A TaskList containing matching Tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":110,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":111,"author":{"gitId":"thaddeusong"},"content":" public TaskList findMatchingTasks(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"thaddeusong"},"content":" TaskList matchingTasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"thaddeusong"},"content":" for (int i \u003d 0; i \u003c getTaskCount(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"thaddeusong"},"content":" if (taskList.getTask(i).containsString(content)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":116,"author":{"gitId":"thaddeusong"},"content":" matchingTasks.addTask(taskList.getTask(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"thaddeusong"},"content":" } catch (DuplicateTaskException dte) {","lastModifiedDate":"2023-09-13"},{"lineNumber":118,"author":{"gitId":"thaddeusong"},"content":" //No duplicate tasks can be found in taskList","lastModifiedDate":"2023-09-13"},{"lineNumber":119,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":120,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"thaddeusong"},"content":" return matchingTasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":125,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":126,"author":{"gitId":"thaddeusong"},"content":" * Initialize the components of the application.","lastModifiedDate":"2023-09-06"},{"lineNumber":127,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":128,"author":{"gitId":"thaddeusong"},"content":" * @param primaryStage the primary stage for this application, onto which","lastModifiedDate":"2023-09-06"},{"lineNumber":129,"author":{"gitId":"thaddeusong"},"content":" * the application scene can be set.","lastModifiedDate":"2023-09-06"},{"lineNumber":130,"author":{"gitId":"thaddeusong"},"content":" * Applications may create other stages, if needed, but they will not be","lastModifiedDate":"2023-09-06"},{"lineNumber":131,"author":{"gitId":"thaddeusong"},"content":" * primary stages.","lastModifiedDate":"2023-09-06"},{"lineNumber":132,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":133,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":134,"author":{"gitId":"thaddeusong"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":135,"author":{"gitId":"thaddeusong"},"content":" this.ui \u003d new Ui(this);","lastModifiedDate":"2023-09-06"},{"lineNumber":136,"author":{"gitId":"thaddeusong"},"content":" ui.renderGui(primaryStage);","lastModifiedDate":"2023-09-06"},{"lineNumber":137,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":138,"author":{"gitId":"thaddeusong"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-06"},{"lineNumber":139,"author":{"gitId":"thaddeusong"},"content":" loadTaskList();","lastModifiedDate":"2023-09-06"},{"lineNumber":140,"author":{"gitId":"thaddeusong"},"content":" } catch (DukeException de) {","lastModifiedDate":"2023-09-06"},{"lineNumber":141,"author":{"gitId":"thaddeusong"},"content":" ui.showError(de);","lastModifiedDate":"2023-09-06"},{"lineNumber":142,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":143,"author":{"gitId":"thaddeusong"},"content":" ui.showMessage(Message.onGreeting(name).fromDuke());","lastModifiedDate":"2023-09-06"},{"lineNumber":144,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":145,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":146,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":147,"author":{"gitId":"thaddeusong"},"content":" * Handle a command.","lastModifiedDate":"2023-09-06"},{"lineNumber":148,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":149,"author":{"gitId":"thaddeusong"},"content":" * @param command The command to execute.","lastModifiedDate":"2023-09-06"},{"lineNumber":150,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":151,"author":{"gitId":"thaddeusong"},"content":" public void executeCommand(Command command) throws DukeException {","lastModifiedDate":"2023-09-06"},{"lineNumber":152,"author":{"gitId":"thaddeusong"},"content":" ui.showMessage(command.execute(this).fromDuke());","lastModifiedDate":"2023-09-06"},{"lineNumber":153,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":154,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"thaddeusong":154}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.application.Application;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.InvalidTaskIndexException;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.NoCommandFoundException;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.TaskIndexOutOfRangeException;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import duke.message.Message;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" * Represents an abstract command that interacts with the application with some content string.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" protected String content;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" protected Command(String content) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" this.content \u003d content;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" * Creates a Command instance based on the given command name and content.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" * @param commandName The name of the command.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" * @param content The content associated with the command.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" * @return A Command instance corresponding to the specified command name.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" * @throws NoCommandFoundException If the provided command name is not recognized.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" public static Command of(String commandName, String content)","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" throws NoCommandFoundException {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" switch (commandName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" case \"bye\":","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" return new Bye(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" case \"todo\":","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" return new Todo(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" return new Deadline(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" case \"event\":","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" return new Event(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" case \"find\":","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" return new Find(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" case \"list\":","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" return new List(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" case \"mark\":","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" return new Mark(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" return new Unmark(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" case \"delete\":","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" return new Delete(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" throw new NoCommandFoundException(commandName + \" \" + content);","lastModifiedDate":"2023-09-15"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" * Executes the command and interacts with the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" * @param application The application instance with which the command interacts.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" * @return A Message instance representing the result of executing the command.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" public abstract Message execute(Application application) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to exit the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":"class Bye extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" protected Bye(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" application.kill();","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" return Message.onExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to add a To-do task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":"class Todo extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" protected Todo(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" Task task \u003d Task.of(content, Task.TaskType.TODO);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" application.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskAdd(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to add a Deadline task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":"class Deadline extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":" protected Deadline(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":" throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":" Task task \u003d Task.of(content, Task.TaskType.DEADLINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":" application.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskAdd(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to add an Event task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"thaddeusong"},"content":"class Event extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"thaddeusong"},"content":" protected Event(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"thaddeusong"},"content":" throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"thaddeusong"},"content":" Task task \u003d Task.of(content, Task.TaskType.EVENT);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"thaddeusong"},"content":" application.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskAdd((task));","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to list tasks in the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"thaddeusong"},"content":"class List extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"thaddeusong"},"content":" protected List(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":134,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application) {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"thaddeusong"},"content":" return Message.accumulateList(Message.convertTasks(application.getTaskList()), \"\\n\").chainTo(","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"thaddeusong"},"content":" Message.onList(application.getTaskList()), \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to mark a task as completed.","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"thaddeusong"},"content":"class Mark extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":144,"author":{"gitId":"thaddeusong"},"content":" protected Mark(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":146,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":147,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":148,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"thaddeusong"},"content":" throws InvalidTaskIndexException, TaskIndexOutOfRangeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":150,"author":{"gitId":"thaddeusong"},"content":" int taskIndex;","lastModifiedDate":"2023-08-29"},{"lineNumber":151,"author":{"gitId":"thaddeusong"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":152,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":153,"author":{"gitId":"thaddeusong"},"content":" taskIndex \u003d Integer.parseInt(content) - 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":154,"author":{"gitId":"thaddeusong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":155,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTaskIndexException(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":156,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":157,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":158,"author":{"gitId":"thaddeusong"},"content":" task \u003d application.getTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"thaddeusong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":160,"author":{"gitId":"thaddeusong"},"content":" throw new TaskIndexOutOfRangeException(String.valueOf(taskIndex));","lastModifiedDate":"2023-08-29"},{"lineNumber":161,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":162,"author":{"gitId":"thaddeusong"},"content":" task.setCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskComplete(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":165,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":166,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to unmark a completed task.","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"thaddeusong"},"content":"class Unmark extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":171,"author":{"gitId":"thaddeusong"},"content":" protected Unmark(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":173,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":174,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":175,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"thaddeusong"},"content":" throws InvalidTaskIndexException, TaskIndexOutOfRangeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":177,"author":{"gitId":"thaddeusong"},"content":" int taskIndex;","lastModifiedDate":"2023-08-29"},{"lineNumber":178,"author":{"gitId":"thaddeusong"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":179,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":180,"author":{"gitId":"thaddeusong"},"content":" taskIndex \u003d Integer.parseInt(content) - 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":181,"author":{"gitId":"thaddeusong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":182,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTaskIndexException(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":183,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":184,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":185,"author":{"gitId":"thaddeusong"},"content":" task \u003d application.getTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"thaddeusong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":187,"author":{"gitId":"thaddeusong"},"content":" throw new TaskIndexOutOfRangeException(String.valueOf(taskIndex));","lastModifiedDate":"2023-08-29"},{"lineNumber":188,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":189,"author":{"gitId":"thaddeusong"},"content":" task.setUncompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskUncomplete(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":192,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":193,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"thaddeusong"},"content":"class Find extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"thaddeusong"},"content":" public Find(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application) {","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskFind().chainTo(","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"thaddeusong"},"content":" Message.accumulateList(Message.convertTasks(application.findMatchingTasks(content)), \"\\n\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"thaddeusong"},"content":" \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to delete a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":210,"author":{"gitId":"thaddeusong"},"content":"class Delete extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":211,"author":{"gitId":"thaddeusong"},"content":" protected Delete(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":213,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":214,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":215,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"thaddeusong"},"content":" throws InvalidTaskIndexException, TaskIndexOutOfRangeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":217,"author":{"gitId":"thaddeusong"},"content":" int taskIndex;","lastModifiedDate":"2023-08-29"},{"lineNumber":218,"author":{"gitId":"thaddeusong"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":219,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":220,"author":{"gitId":"thaddeusong"},"content":" taskIndex \u003d Integer.parseInt(content) - 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":221,"author":{"gitId":"thaddeusong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":222,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTaskIndexException(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":223,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":224,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":225,"author":{"gitId":"thaddeusong"},"content":" task \u003d application.getTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"thaddeusong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":227,"author":{"gitId":"thaddeusong"},"content":" throw new TaskIndexOutOfRangeException(String.valueOf(taskIndex));","lastModifiedDate":"2023-08-29"},{"lineNumber":228,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":229,"author":{"gitId":"thaddeusong"},"content":" application.removeTask((task));","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskDelete(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":232,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":232}},{"path":"src/main/java/duke/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.application.Application;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * Entrypoint for the application.","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class Duke {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" javafx.application.Application.launch(Application.class, args);","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"thaddeusong":12}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An abstract class for custom exceptions specific to Duke.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public abstract class DukeException extends Exception {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" protected DukeException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" * Generates an error message object based on the exception\u0027s content.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * @return An ErrorMessage object representing the error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" public abstract ErrorMessage generateErrorMessage();","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":20}},{"path":"src/main/java/duke/exception/DuplicateTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a duplicate task is added.","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class DuplicateTaskException extends DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public DuplicateTaskException(String message) {","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message + \" is already in the task list!\");","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage( getMessage() + \" is already in the task list!\");","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"thaddeusong":15}},{"path":"src/main/java/duke/exception/EmptyTaskDescException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a task description is empty.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class EmptyTaskDescException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public EmptyTaskDescException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(\"A task description cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":19}},{"path":"src/main/java/duke/exception/FileNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when the file cannot be found.","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"public class FileNotFoundException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":" public FileNotFoundException(String name) {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" super(name);","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(\"There is no file at \" + getMessage());","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":15}},{"path":"src/main/java/duke/exception/InvalidTaskFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a task format is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class InvalidTaskFormatException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public InvalidTaskFormatException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(getMessage() + \" isn\u0027t the right format for this kind of task.\");","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":17}},{"path":"src/main/java/duke/exception/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a task index is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class InvalidTaskIndexException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public InvalidTaskIndexException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(getMessage() + \" isn\u0027t a number.\");","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":17}},{"path":"src/main/java/duke/exception/InvalidTimeFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a time format is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class InvalidTimeFormatException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public InvalidTimeFormatException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(getMessage() + \" isn\u0027t the right time format.\");","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"thaddeusong":17}},{"path":"src/main/java/duke/exception/NoCommandFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a no matching command is found.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class NoCommandFoundException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public NoCommandFoundException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(\"Sorry, I don\u0027t know what \" + getMessage() + \" means.\");","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":18}},{"path":"src/main/java/duke/exception/TaskIndexOutOfRangeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a task index is out of range.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class TaskIndexOutOfRangeException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public TaskIndexOutOfRangeException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(getMessage() + 1 + \" is out of range of the task list.\");","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":17}},{"path":"src/main/java/duke/message/ErrorMessage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.message;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * Represents an error message that can be displayed to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" * Extends the {@link Message} class.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"public class ErrorMessage extends Message {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" private static final Color ERROR_COLOR \u003d Color.RED;","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage(String content) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" super(content, BOT_IMAGE, ERROR_COLOR);","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":15}},{"path":"src/main/java/duke/message/Message.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.message;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * Represent a message that can be displayed in the GUI.","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"public class Message extends HBox {","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" protected static final Image USER_IMAGE \u003d","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" new Image(\"https://se-education.org/guides/tutorials/images/javafx/DaUser.png\");","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" protected static final Image BOT_IMAGE \u003d","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" new Image(\"https://se-education.org/guides/tutorials/images/javafx/DaDuke.png\");","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" private final String content;","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" private final Label label;","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" private ImageView image;","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" private Color color \u003d Color.BLACK;","lastModifiedDate":"2023-09-15"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" * Constructs a message with the given content.","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" * @param content The content of the message.","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" public Message(String content) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" this.content \u003d content;","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" //Set label contents and formatting","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" this.label \u003d new Label();","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" label.setText(content);","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" label.setWrapText(true);","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" label.setTextFill(color);","lastModifiedDate":"2023-09-15"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" this.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" this.getChildren().addAll(this.label);","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" * Constructs a message with the given content and image.","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" * @param content The content of the message.","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" * @param image The image associated with the message.","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" public Message(String content, Image image) {","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" this(content);","lastModifiedDate":"2023-09-06"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" this.image \u003d new ImageView();","lastModifiedDate":"2023-09-06"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" //Set image contents and formatting","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" this.image.setImage(image);","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" this.image.setFitWidth(100.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" this.image.setFitHeight(100.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" this.getChildren().addAll(this.image);","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" * Constructs a message with the given content, image and text color.","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" * @param content The content of the message.","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" * @param image The image associated with this message.","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" * @param color The color of the text.","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" public Message(String content, Image image, Color color) {","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" this(content, image);","lastModifiedDate":"2023-09-15"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" this.color \u003d color;","lastModifiedDate":"2023-09-15"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" label.setTextFill(color);","lastModifiedDate":"2023-09-15"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" * Converts a list of tasks into a list of messages.","lastModifiedDate":"2023-09-06"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" * @param taskList The list of tasks to convert.","lastModifiedDate":"2023-09-06"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" * @return A list of messages representing the tasks.","lastModifiedDate":"2023-09-06"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" public static List\u003cMessage\u003e convertTasks(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" List\u003cMessage\u003e messages \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":" for (int i \u003d 0; i \u003c taskList.getTaskCount(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" messages.add((new Message((i + 1) + \". \" + taskList.getTask(i).toString())));","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" return messages;","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" public static Message onGreeting(String name) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"Hello, I\u0027m \" + name + \".\\n\" + \"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":" public static Message onExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":" public static Message onTaskAdd(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"added: \" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":" public static Message onTaskComplete(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"Nice! I\u0027ve marked this task as done:\\n\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":" public static Message onTaskUncomplete(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"OK, I\u0027ve marked this task as not done yet:\\n\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":" public static Message onTaskDelete(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"I\u0027ve removed this task: \\n\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"thaddeusong"},"content":" public static Message onTaskFind() {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"Here are the matching tasks in your list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"thaddeusong"},"content":" public static Message onList(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"There are \" + tasks.getTaskCount() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"thaddeusong"},"content":" public Message chainTo(Message message, String splitString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"thaddeusong"},"content":" return new Message(this.content + splitString + message.content);","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":122,"author":{"gitId":"thaddeusong"},"content":" * Accumulates a list of messages into a single message with specified splitting text.","lastModifiedDate":"2023-09-06"},{"lineNumber":123,"author":{"gitId":"thaddeusong"},"content":" * Messages in the list are concatenated together with the specified splitting text.","lastModifiedDate":"2023-09-06"},{"lineNumber":124,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":125,"author":{"gitId":"thaddeusong"},"content":" * @param messages The list of messages to accumulate.","lastModifiedDate":"2023-09-06"},{"lineNumber":126,"author":{"gitId":"thaddeusong"},"content":" * @param splitString The text to be used for splitting the messages.","lastModifiedDate":"2023-09-06"},{"lineNumber":127,"author":{"gitId":"thaddeusong"},"content":" * @return A message containing the accumulated text.","lastModifiedDate":"2023-09-06"},{"lineNumber":128,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":129,"author":{"gitId":"thaddeusong"},"content":" public static Message accumulateList(List\u003c? extends Message\u003e messages, String splitString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"thaddeusong"},"content":" Message chainedMessage \u003d new Message(\"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"thaddeusong"},"content":" if (messages.size() \u003e 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"thaddeusong"},"content":" chainedMessage \u003d messages.get(0);","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"thaddeusong"},"content":" for (int i \u003d 1; i \u003c messages.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"thaddeusong"},"content":" Message message \u003d messages.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"thaddeusong"},"content":" chainedMessage \u003d chainedMessage.chainTo(message, splitString);","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"thaddeusong"},"content":" return chainedMessage;","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-15"},{"lineNumber":143,"author":{"gitId":"thaddeusong"},"content":" * Returns a copy of this Message instance.","lastModifiedDate":"2023-09-15"},{"lineNumber":144,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-15"},{"lineNumber":145,"author":{"gitId":"thaddeusong"},"content":" * @return A clone of this message.","lastModifiedDate":"2023-09-15"},{"lineNumber":146,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":147,"author":{"gitId":"thaddeusong"},"content":" protected Message clone() {","lastModifiedDate":"2023-09-15"},{"lineNumber":148,"author":{"gitId":"thaddeusong"},"content":" return new Message(this.content, this.image.getImage(), this.color);","lastModifiedDate":"2023-09-15"},{"lineNumber":149,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":150,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":151,"author":{"gitId":"thaddeusong"},"content":" * Flips the message, changing its alignment and layout.","lastModifiedDate":"2023-09-06"},{"lineNumber":152,"author":{"gitId":"thaddeusong"},"content":" * This method creates a new message with the same content but with the image on the left side.","lastModifiedDate":"2023-09-06"},{"lineNumber":153,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":154,"author":{"gitId":"thaddeusong"},"content":" * @return A flipped message.","lastModifiedDate":"2023-09-06"},{"lineNumber":155,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":156,"author":{"gitId":"thaddeusong"},"content":" public Message flip() {","lastModifiedDate":"2023-09-06"},{"lineNumber":157,"author":{"gitId":"thaddeusong"},"content":" Message flippedMessage \u003d clone();","lastModifiedDate":"2023-09-15"},{"lineNumber":158,"author":{"gitId":"thaddeusong"},"content":" flippedMessage.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-06"},{"lineNumber":159,"author":{"gitId":"thaddeusong"},"content":" flippedMessage.getChildren().clear();","lastModifiedDate":"2023-09-06"},{"lineNumber":160,"author":{"gitId":"thaddeusong"},"content":" flippedMessage.getChildren().addAll(flippedMessage.image, flippedMessage.label);","lastModifiedDate":"2023-09-06"},{"lineNumber":161,"author":{"gitId":"thaddeusong"},"content":" return flippedMessage;","lastModifiedDate":"2023-09-06"},{"lineNumber":162,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":163,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":164,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":165,"author":{"gitId":"thaddeusong"},"content":" * Formats the message such that it appears on the users side.","lastModifiedDate":"2023-09-06"},{"lineNumber":166,"author":{"gitId":"thaddeusong"},"content":" * @return A message from the user.","lastModifiedDate":"2023-09-06"},{"lineNumber":167,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":168,"author":{"gitId":"thaddeusong"},"content":" public Message fromUser() {","lastModifiedDate":"2023-09-06"},{"lineNumber":169,"author":{"gitId":"thaddeusong"},"content":" return new Message(this.content, USER_IMAGE, color);","lastModifiedDate":"2023-09-15"},{"lineNumber":170,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":171,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":172,"author":{"gitId":"thaddeusong"},"content":" * Formats the message such that it appears on the bots side.","lastModifiedDate":"2023-09-06"},{"lineNumber":173,"author":{"gitId":"thaddeusong"},"content":" * @return A message from the bot.","lastModifiedDate":"2023-09-06"},{"lineNumber":174,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":175,"author":{"gitId":"thaddeusong"},"content":" public Message fromDuke() {","lastModifiedDate":"2023-09-06"},{"lineNumber":176,"author":{"gitId":"thaddeusong"},"content":" return new Message(this.content, BOT_IMAGE, color).flip();","lastModifiedDate":"2023-09-15"},{"lineNumber":177,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"thaddeusong"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"thaddeusong"},"content":" return content;","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"thaddeusong":184}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import java.io.File;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.FileNotFoundException;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" * Represents a text-file based storage.","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" private final File file;","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" private final BufferedWriter bufferedWriter;","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" * Constructor for a Storage instance.","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" * @param filePath The file path to the text file.","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" * @throws FileNotFoundException If no file exists at the filePath.","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" public Storage(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" file \u003d new File(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" bufferedWriter \u003d new BufferedWriter(new FileWriter(file, true));","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" throw new FileNotFoundException(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" * Write a line into the text file.","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" * @param line The line to add.","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" public void addLine(String line) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" bufferedWriter.write(line);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" bufferedWriter.flush();","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" * Get a line from the text file.","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" * @param index The index of the line.","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" * @return The line at the given index.","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" public String getLine(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" String line;","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" int currentLine \u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" if (index \u003d\u003d currentLine) {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" return line;","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" currentLine++;","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" return \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" * Clear the file of all text.","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" public void clear() {","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" // Create a FileWriter with the given file path","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" // Overwrite the file content with an empty string","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" fileWriter.write(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" // Close the FileWriter","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":84}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.InvalidTaskFormatException;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.InvalidTimeFormatException;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" * Represents a deadline task that has a name and deadline time.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * Extends the {@link Task} class.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" private final LocalDateTime deadlineTime;","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" * Constructor for a Deadline task.","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" * @param task The information about the Deadline task.","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException when formatting errors occur.","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" public Deadline(String task) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" super(task.split(\"/\", 2)[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" String[] taskComponents \u003d task.split(\"/\", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" String[] timeComponents;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" timeComponents \u003d taskComponents[1].split(\" \", 3);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" if (timeComponents.length \u003c 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTaskFormatException(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" deadlineTime \u003d LocalDateTime.of(LocalDate.parse(timeComponents[1]),","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" LocalTime.parse(timeComponents[2]));","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" * Returns a Deadline object parsed from the save format.","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" * @param savedTask The string representing the task in the save format.","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" * @return A new Deadline object.","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException when the formatting is wrong.","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" public static Deadline parseSaveFormat(String savedTask) throws DukeException {","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" String[] components \u003d savedTask.split(\"\\\\|\", 3);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" Deadline task \u003d new Deadline(components[1] + \"/by \" + components[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" if (components[2].equals(\"true\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" task.setCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" } else {","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" task.setUncompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadlineTime.toLocalDate().toString() + \",\"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" + deadlineTime.toLocalTime().toString() + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" * Converts this Deadline into a save format string.","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" * @return A string representing this Deadline.","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" return \"deadline:\" + deadlineTime.toLocalDate().toString() + \" \"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" + deadlineTime.toLocalTime().toString() + \"|\" + super.toSaveFormat();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":77}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.InvalidTaskFormatException;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.InvalidTimeFormatException;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" * Represents an event task that has a name, start time, and end time.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" * Extends the {@link Task} class.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" private final LocalDateTime startTime;","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" private final LocalDateTime endTime;","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" * Constructor for an Event Task.","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" * @param task The information about the Event task.","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException When formatting errors occur.","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" public Event(String task) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" super(task.split(\"/\", 3)[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" String[] taskComponents \u003d task.split(\"/\", 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" String[] startTimeComponents;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" String[] endTimeComponents;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" startTimeComponents \u003d taskComponents[1].split(\" \", 3);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" endTimeComponents \u003d taskComponents[2].split(\" \", 3);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTaskFormatException(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" if (startTimeComponents.length \u003c 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" this.startTime \u003d LocalDateTime.of(LocalDate.parse(startTimeComponents[1]),","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" LocalTime.parse(startTimeComponents[2]));","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" if (endTimeComponents.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" this.endTime \u003d LocalDateTime.of(LocalDate.parse(endTimeComponents[1]),","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" LocalTime.parse(endTimeComponents[2]));","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" * Returns a Event object parsed from the save format.","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" * @param savedTask The string representing the task in the save format.","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" * @return A new Deadline object.","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException when the formatting is wrong.","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" public static Event parseSaveFormat(String savedTask) throws DukeException {","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" String[] components \u003d savedTask.split(\"\\\\|\", 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" Event task \u003d new Event(components[2] + \"/from \" + components[0] + \"/to \" + components[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" if (components[3].equals(\"true\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" task.setCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" } else {","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" task.setUncompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" return \"[E]\" + super.toString() + \" (from: \"","lastModifiedDate":"2023-09-05"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" + startTime.toLocalDate().toString() + \",\" + startTime.toLocalTime().toString() + \" to: \"","lastModifiedDate":"2023-09-05"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" + endTime.toLocalDate().toString() + \",\" + endTime.toLocalTime().toString() + \")\";","lastModifiedDate":"2023-09-05"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" * Converts this Event into a save format string.","lastModifiedDate":"2023-09-05"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" * @return A string representing this Deadline.","lastModifiedDate":"2023-09-05"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":" return \"event:\"","lastModifiedDate":"2023-09-05"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" + startTime.toLocalDate().toString() + \" \" + startTime.toLocalTime().toString() + \"|\"","lastModifiedDate":"2023-09-05"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" + endTime.toLocalDate().toString() + \" \" + endTime.toLocalTime() + \"|\" + super.toSaveFormat();","lastModifiedDate":"2023-09-05"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":90}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.EmptyTaskDescException;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.NoCommandFoundException;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":" * Represents a task with a name and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" private final String name;","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" private boolean completed \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" * Constructor for a Task instance.","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * @param name The name/description of the task.","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" * @throws EmptyTaskDescException If the name is empty.","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" public Task(String name) throws EmptyTaskDescException {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" if (name.isBlank()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" throw new EmptyTaskDescException(\"Name cannot be blank.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" * Parses a task from a line of text.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" * @param line The line of text containing task information.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" * @return A Task object parsed from the input line.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If there\u0027s an issue with parsing the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" public static Task parse(String line)","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" String[] components \u003d line.split(\":\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" TaskType taskType \u003d components[0].equals(\"todo\") ? TaskType.TODO","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" : components[0].equals(\"deadline\") ? TaskType.DEADLINE","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" : TaskType.EVENT;","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" String content \u003d components[1];","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" case TODO:","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" return Todo.parseSaveFormat(content);","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" return Deadline.parseSaveFormat(content);","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" case EVENT:","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" return Event.parseSaveFormat(content);","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" throw new NoCommandFoundException(taskType.name());","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" public boolean containsString(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" return name.contains(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" * The different types of tasks.","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" public enum TaskType {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" TODO,","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" DEADLINE,","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" EVENT","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" * Creates a Task object based on the provided content and task type.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" * @param task The content of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" * @param taskType The type of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" * @return A Task object of the specified type.","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If there\u0027s an issue with creating the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" public static Task of(String task, TaskType taskType)","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" return new Todo(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" return new Deadline(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" return new Event(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" throw new NoCommandFoundException(taskType.name());","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" public void setCompleted() {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":" completed \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" public void setUncompleted() {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" completed \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":" public String getName() {","lastModifiedDate":"2023-09-13"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":" return name;","lastModifiedDate":"2023-09-13"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-09-13"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-13"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":" return obj instanceof Task \u0026\u0026 ((Task) obj).name.equals(name);","lastModifiedDate":"2023-09-13"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":" return completed ? \"[X] \" + name : \"[ ] \" + name;","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":" return name + \"|\" + completed;","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"thaddeusong":109}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DuplicateTaskException;","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" * Represents a list of Tasks.","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" private final List\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * @param task The task to add.","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" public void addTask(Task task) throws DuplicateTaskException {","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" if (taskList.contains(task)) {","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" throw new DuplicateTaskException(task.getName());","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" * Returns a task from the task list.","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" * @param index The index of the task.","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" * @return The task at the given index.","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" assert index \u003c taskList.size();","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" return taskList.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" * Removes a task from the task list.","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" * @param task The task to remove.","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" public void removeTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" assert taskList.contains(task);","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" taskList.remove(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" * Returns the size of the task list.","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" * @return THe number of tasks in the list.","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" return taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"thaddeusong":51}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.EmptyTaskDescException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * Represents a to-do task that has a name.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" * Extends the {@link Task} class.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" public Todo(String task) throws EmptyTaskDescException {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" super(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" * Returns a To-do object parsed from the save format.","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" * @param savedTask The string representing the task in the save format.","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * @return A new To-do object.","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" public static Todo parseSaveFormat(String savedTask) throws EmptyTaskDescException {","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" String[] components \u003d savedTask.split(\"\\\\|\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" Todo task \u003d new Todo(components[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" if (components[1].equals(\"true\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" task.setCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" } else {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" task.setUncompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" return \"todo:\" + super.toSaveFormat();","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":36}},{"path":"src/main/java/duke/ui/InputParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * Parses user input and returns the corresponding command object.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class InputParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" * Parses an input line into a command.","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" * @param input The string input.","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" * @return A Command object representing the input.","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If the input has formatting errors.","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" public Command parseInput(String input) throws DukeException {","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" String[] inputComponents \u003d input.trim().split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" String commandName \u003d inputComponents[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" String content \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" if (inputComponents.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" content \u003d inputComponents[1];","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" return Command.of(commandName, content);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":24}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.application.Application;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import duke.message.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" * Handles user interactions, input parsing, and displaying messages.","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"public class Ui {","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" private static final double GUI_WIDTH \u003d 800.0;","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" private static final double GUI_HEIGHT \u003d 600.0;","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" private static final double SCROLL_BAR_WIDTH \u003d 15.0;","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" private static final double INPUT_FIELD_HEIGHT \u003d 65.0;","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" private static final double SEND_BUTTON_WIDTH \u003d 75.0;","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" private final InputParser parser \u003d new InputParser();","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" private final Application application;","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" private Stage primaryStage;","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" //GUI Window dimensions","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" * Constructor for this class.","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" * @param application The application that interfaces with this UI.","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" public Ui(Application application) {","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" this.application \u003d application;","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" * Parses the next line of user input into a Command object.","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" * @return A Command object corresponding to the parsed user input.","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If there\u0027s an issue with parsing the input or creating the command.","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" public Command parseLine(String line) throws DukeException {","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" return parser.parseInput(line);","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" * Displays the provided message to the user.","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" * @param message The message to be displayed.","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" public void showMessage(Message message) {","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" dialogContainer.getChildren().addAll(message);","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" * Displays an error message generated from the provided DukeException.","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" * @param e The DukeException that triggered the error.","lastModifiedDate":"2023-09-06"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" public void showError(DukeException e) {","lastModifiedDate":"2023-09-06"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" dialogContainer.getChildren().addAll(e.generateErrorMessage().fromDuke());","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" * Render the GUI.","lastModifiedDate":"2023-09-06"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" * @param stage The primary stage for the GUI.","lastModifiedDate":"2023-09-06"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" public void renderGui(Stage stage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" primaryStage \u003d stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" //Init text pane","lastModifiedDate":"2023-09-06"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" scrollPane \u003d new ScrollPane();","lastModifiedDate":"2023-09-06"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setPrefSize(GUI_WIDTH - SCROLL_BAR_WIDTH, GUI_HEIGHT - INPUT_FIELD_HEIGHT);","lastModifiedDate":"2023-09-12"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2023-09-06"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2023-09-06"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2023-09-06"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" //Init dialog container","lastModifiedDate":"2023-09-06"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2023-09-06"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2023-09-06"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2023-09-06"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" //Init text input","lastModifiedDate":"2023-09-06"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2023-09-06"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":" userInput.setPrefWidth(GUI_WIDTH - SEND_BUTTON_WIDTH);","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":" AnchorPane.setLeftAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":" //Init send button","lastModifiedDate":"2023-09-06"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":" Button sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2023-09-06"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":" AnchorPane.setRightAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":" //Handle user events","lastModifiedDate":"2023-09-06"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":" sendButton.setOnMouseClicked((event) -\u003e handleUserInput());","lastModifiedDate":"2023-09-06"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":" userInput.setOnAction((event) -\u003e handleUserInput());","lastModifiedDate":"2023-09-06"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":" //Add nodes to main layout","lastModifiedDate":"2023-09-06"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2023-09-06"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2023-09-06"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":" Scene scene \u003d new Scene(mainLayout);","lastModifiedDate":"2023-09-06"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":" //Update node dimensions if window is resized","lastModifiedDate":"2023-09-06"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2023-09-06"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":" stage.heightProperty().addListener((observable) -\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setPrefHeight(stage.getHeight() - INPUT_FIELD_HEIGHT));","lastModifiedDate":"2023-09-12"},{"lineNumber":110,"author":{"gitId":"thaddeusong"},"content":" stage.widthProperty().addListener((observable) -\u003e {","lastModifiedDate":"2023-09-06"},{"lineNumber":111,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setPrefWidth(stage.getWidth() - SCROLL_BAR_WIDTH);","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"thaddeusong"},"content":" userInput.setPrefWidth(stage.getWidth() - SEND_BUTTON_WIDTH);","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"thaddeusong"},"content":" });","lastModifiedDate":"2023-09-06"},{"lineNumber":114,"author":{"gitId":"thaddeusong"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-06"},{"lineNumber":115,"author":{"gitId":"thaddeusong"},"content":" stage.show();","lastModifiedDate":"2023-09-06"},{"lineNumber":116,"author":{"gitId":"thaddeusong"},"content":" stage.setOnCloseRequest(event -\u003e application.kill());","lastModifiedDate":"2023-09-06"},{"lineNumber":117,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":118,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":119,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":120,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":121,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":122,"author":{"gitId":"thaddeusong"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-06"},{"lineNumber":123,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":124,"author":{"gitId":"thaddeusong"},"content":" dialogContainer.getChildren().addAll(new Message(userInput.getText()).fromUser());","lastModifiedDate":"2023-09-06"},{"lineNumber":125,"author":{"gitId":"thaddeusong"},"content":" application.executeCommand(parseLine(userInput.getText()));","lastModifiedDate":"2023-09-06"},{"lineNumber":126,"author":{"gitId":"thaddeusong"},"content":" } catch (DukeException de) {","lastModifiedDate":"2023-09-06"},{"lineNumber":127,"author":{"gitId":"thaddeusong"},"content":" showError(de);","lastModifiedDate":"2023-09-06"},{"lineNumber":128,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":129,"author":{"gitId":"thaddeusong"},"content":" userInput.clear();","lastModifiedDate":"2023-09-06"},{"lineNumber":130,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":131,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":132,"author":{"gitId":"thaddeusong"},"content":" public void closeGui() {","lastModifiedDate":"2023-09-06"},{"lineNumber":133,"author":{"gitId":"thaddeusong"},"content":" primaryStage.close();","lastModifiedDate":"2023-09-06"},{"lineNumber":134,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":135,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"thaddeusong":135}},{"path":"src/test/java/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" public void testDeadlineConstructor() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Deadline(\"a/by 2020-02-10 10:15\").toString(), \"[D][ ] a (by: 2020-02-10,10:15)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" public void testDeadlineToSaveFormat() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Deadline(\"a/by 2020-02-10 10:15\").toSaveFormat(), \"deadline:2020-02-10,10:15|a|false\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"thaddeusong":19}},{"path":"src/test/java/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"public class EventTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" public void testEventConstructor() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Event(\"a/from 2020-02-10 10:15/to 2020-02-10 10:20\").toString(), \"[E][ ] a (from: 2020-02-10,10:15 to: 2020-02-10,10:20)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" public void testEventToSaveFormat() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Event(\"a/from 2020-02-10 10:15/to 2020-02-10 10:20\").toSaveFormat(), \"event:2020-02-10 10:15|2020-02-10 10:20|a|false\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"thaddeusong":19}},{"path":"src/test/java/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.EmptyTaskDescException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" public void testTodoConstructor() throws EmptyTaskDescException {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Todo(\"a\").toString(), \"[T][ ] a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" public void testTodoToSaveFormat() throws EmptyTaskDescException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Todo(\"a\").toSaveFormat(), \"todo:a|false\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"thaddeusong":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"hello","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"todo a","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"deadline b / by jun 1","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"event c / from jun 1 / to jun 2","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"thaddeusong":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":"thaddeusong"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Task\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\DukeException\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"thaddeusong":3,"-":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":"thaddeusong"},"content":"if ! (javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" javac -cp ..\\src\\main\\java\\Duke -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" javac -cp ..\\src\\main\\java\\DukeException -Xlint:none -d ..\\bin ..\\src\\main\\java\\DukeException\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" javac -cp ..\\src\\main\\java\\Task -Xlint:none -d ..\\bin ..\\src\\main\\java\\Task\\*.java)","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"thaddeusong":4,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"## Duke Project","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"\u003e Beware the stories you read or tell; subtly, at night, beneath the waters of consciousness, they are altering your world. - [Ben Okri](https://en.wikipedia.org/wiki/Ben_Okri)","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"This project is","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"- **Text**-based","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"- *Easy* to use","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"This project helps you to:","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"1. Track tasks","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"2. Stay on target","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"3. Practise programming","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":":+1:","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":"Features:","lastModifiedDate":"2023-09-05"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"- [x] Managing tasks","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"- [ ] Managing deadlines (coming soon)","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":"\u003e If you Java programmer, you can use it to practice Java too. Here\u0027s the main method:","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":"```java","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":"public class Main {","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-05"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2023-09-05"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-09-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"thaddeusong":25,"-":5}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2023-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"checkstyle {","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" implementation \u0027org.jetbrains:annotations:23.0.0\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2023-08-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2023-08-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2023-08-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2023-08-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2023-08-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2023-08-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2023-08-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2023-08-05"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" mainClass.set(\"duke.duke.Duke\")","lastModifiedDate":"2023-09-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2023-08-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2023-08-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2023-08-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2023-08-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2023-08-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-05"}],"authorContributionMap":{"thaddeusong":22,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"# Iris User Guide","lastModifiedDate":"2023-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"## Features ","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"## Adding Tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"Different types of tasks can be added.","lastModifiedDate":"2023-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"### Usage","lastModifiedDate":"2023-09-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"### `todo` - Adds a todo task. ","lastModifiedDate":"2023-09-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"Example of usage: ","lastModifiedDate":"2023-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":"`todo (name of task)`","lastModifiedDate":"2023-09-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":"Adds a task with the given name.","lastModifiedDate":"2023-09-25"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":"added: [T][] name","lastModifiedDate":"2023-09-25"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":"`todo (name of task)`","lastModifiedDate":"2023-09-25"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":"Adds a todo task with the given name.","lastModifiedDate":"2023-09-25"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":"added: [T][] name","lastModifiedDate":"2023-09-25"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":"\u003chr /\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":"### `deadline` - Adds a deadline task.","lastModifiedDate":"2023-09-25"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":"`deadline (name of task)/by (year-month-day) (time)`","lastModifiedDate":"2023-09-25"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":"Adds a deadline task with the given name.","lastModifiedDate":"2023-09-25"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":"added: [D][] name (by:date,time)","lastModifiedDate":"2023-09-25"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":"\u003chr /\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":"### `event` - Adds a event task.","lastModifiedDate":"2023-09-25"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":"`event (name of task)/from (start date) (time)/to (end date) (time)`","lastModifiedDate":"2023-09-25"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":"Adds a deadline task with the given name.","lastModifiedDate":"2023-09-25"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":"added: [E][ ] name (from: date,time to: date,time)","lastModifiedDate":"2023-09-25"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":"\u003chr /\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":"## Listing Tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":"### `list` - List the tasks saved","lastModifiedDate":"2023-09-25"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":"`list`","lastModifiedDate":"2023-09-25"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":"Lists out all the tasks saved in the bot","lastModifiedDate":"2023-09-25"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":"1. Task 1","lastModifiedDate":"2023-09-25"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":"2. Task 2","lastModifiedDate":"2023-09-25"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":"...","lastModifiedDate":"2023-09-25"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":"There are n tasks in the list.","lastModifiedDate":"2023-09-25"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":"\u003chr /\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":"## Deleting Tasks","lastModifiedDate":"2023-09-25"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":"### `delete` - Delete a task from the list","lastModifiedDate":"2023-09-25"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":"`delete 1`","lastModifiedDate":"2023-09-25"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":"Deletes the task at the given index","lastModifiedDate":"2023-09-25"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":"I\u0027ve removed this task:","lastModifiedDate":"2023-09-25"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":"[T][] name","lastModifiedDate":"2023-09-25"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":"## Marking Tasks As Done","lastModifiedDate":"2023-09-25"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":"### `mark` - Marks a task as done","lastModifiedDate":"2023-09-25"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":"Marked tasks are ticked with an X in their entry.","lastModifiedDate":"2023-09-25"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":"`mark 1`","lastModifiedDate":"2023-09-25"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":110,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":111,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":112,"author":{"gitId":"thaddeusong"},"content":"Marks the task at the given index as done","lastModifiedDate":"2023-09-25"},{"lineNumber":113,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":114,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":115,"author":{"gitId":"thaddeusong"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-25"},{"lineNumber":116,"author":{"gitId":"thaddeusong"},"content":"[T][X] name","lastModifiedDate":"2023-09-25"},{"lineNumber":117,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":118,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":119,"author":{"gitId":"thaddeusong"},"content":"### `unmark` - Unmarks a task as done","lastModifiedDate":"2023-09-25"},{"lineNumber":120,"author":{"gitId":"thaddeusong"},"content":"Example of usage:","lastModifiedDate":"2023-09-25"},{"lineNumber":121,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":122,"author":{"gitId":"thaddeusong"},"content":"`unmark 1`","lastModifiedDate":"2023-09-25"},{"lineNumber":123,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":124,"author":{"gitId":"thaddeusong"},"content":"Expected outcome:","lastModifiedDate":"2023-09-25"},{"lineNumber":125,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":126,"author":{"gitId":"thaddeusong"},"content":"Unmarks the task at the given index","lastModifiedDate":"2023-09-25"},{"lineNumber":127,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":128,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":129,"author":{"gitId":"thaddeusong"},"content":"OK, I\u0027ve marked this task as not done yet:","lastModifiedDate":"2023-09-25"},{"lineNumber":130,"author":{"gitId":"thaddeusong"},"content":"[T][] name","lastModifiedDate":"2023-09-25"},{"lineNumber":131,"author":{"gitId":"thaddeusong"},"content":"```","lastModifiedDate":"2023-09-25"},{"lineNumber":132,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-25"},{"lineNumber":133,"author":{"gitId":"thaddeusong"},"content":"\u003chr /\u003e","lastModifiedDate":"2023-09-25"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":135,"author":{"gitId":"thaddeusong"},"content":"## Exiting The Bot","lastModifiedDate":"2023-09-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":137,"author":{"gitId":"thaddeusong"},"content":"### \u0027bye\u0027 - Exits the bot","lastModifiedDate":"2023-09-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":140,"author":{"gitId":"thaddeusong"},"content":"\u0027bye\u0027","lastModifiedDate":"2023-09-25"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":142,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":144,"author":{"gitId":"thaddeusong"},"content":"Exits the bot","lastModifiedDate":"2023-09-25"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"},{"lineNumber":147,"author":{"gitId":"thaddeusong"},"content":"Bye, hope to see you again soon!","lastModifiedDate":"2023-09-25"},{"lineNumber":148,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"thaddeusong":128,"-":20}},{"path":"src/data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"todo:b|false","lastModifiedDate":"2023-09-26"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"deadline:2020-02-10 10:15|a|false","lastModifiedDate":"2023-09-26"}],"authorContributionMap":{"thaddeusong":2}},{"path":"src/main/java/duke/application/Application.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.application;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.util.concurrent.Executors;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import java.util.concurrent.ScheduledExecutorService;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import java.util.concurrent.TimeUnit;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DuplicateTaskException;","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"import duke.message.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":"import javafx.application.Platform;","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" * The application that manages UI and the taskList.","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":"public class Application extends javafx.application.Application {","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" private static final String name \u003d \"Iris\";","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" private static final String filePath \u003d \"C:\\\\Users\\\\ortt2\\\\Documents\\\\ip\\\\src\\\\data\\\\tasks.txt\";","lastModifiedDate":"2023-09-06"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" private TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" private Ui ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" private Storage storage \u003d null;","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" * Shuts down application.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" public void kill() {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" saveTaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" ScheduledExecutorService executor \u003d Executors.newScheduledThreadPool(1);","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" executor.schedule(() -\u003e Platform.runLater(ui::closeGui), 1, TimeUnit.SECONDS);","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" * Adds a task to the application\u0027s task list and storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" * @param task The task to be added.","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" public void addTask(Task task) throws DuplicateTaskException {","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" * Removes a task from the application\u0027s task list and storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" * @param task The task to be removed.","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" public void removeTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" taskList.removeTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" * Loads the task list from storage into the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If there\u0027s an issue with loading tasks from storage.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" public void loadTaskList() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" String line;","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" int currentLine \u003d 1;","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" while (!(line \u003d storage.getLine(currentLine)).equals(\"\")) {","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" taskList.addTask(Task.parse(line));","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" currentLine++;","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" * Saves the task list into storage.","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" public void saveTaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" storage.clear();","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" for (int i \u003d 0; i \u003c getTaskCount(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" Task task \u003d taskList.getTask(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" storage.addLine(task.toSaveFormat());","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" * Returns the number of tasks in the application\u0027s task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" * @return The number of tasks.","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" return taskList.getTaskCount();","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":" * Retrieves a task from the application\u0027s task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":" * @return The task at the specified index.","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":" return taskList.getTask(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2023-08-31"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":" return taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":" * Retrieves a TaskList containing all the tasks that contain a substring.","lastModifiedDate":"2023-09-05"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":" * @param content The substring to search for.","lastModifiedDate":"2023-09-05"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":" * @return A TaskList containing matching Tasks.","lastModifiedDate":"2023-09-05"},{"lineNumber":110,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":111,"author":{"gitId":"thaddeusong"},"content":" public TaskList findMatchingTasks(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"thaddeusong"},"content":" TaskList matchingTasks \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"thaddeusong"},"content":" for (int i \u003d 0; i \u003c getTaskCount(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"thaddeusong"},"content":" if (taskList.getTask(i).containsString(content)) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":116,"author":{"gitId":"thaddeusong"},"content":" matchingTasks.addTask(taskList.getTask(i));","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"thaddeusong"},"content":" } catch (DuplicateTaskException dte) {","lastModifiedDate":"2023-09-13"},{"lineNumber":118,"author":{"gitId":"thaddeusong"},"content":" //No duplicate tasks can be found in taskList","lastModifiedDate":"2023-09-13"},{"lineNumber":119,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":120,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"thaddeusong"},"content":" return matchingTasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":124,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":125,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":126,"author":{"gitId":"thaddeusong"},"content":" * Initialize the components of the application.","lastModifiedDate":"2023-09-06"},{"lineNumber":127,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":128,"author":{"gitId":"thaddeusong"},"content":" * @param primaryStage the primary stage for this application, onto which","lastModifiedDate":"2023-09-06"},{"lineNumber":129,"author":{"gitId":"thaddeusong"},"content":" * the application scene can be set.","lastModifiedDate":"2023-09-06"},{"lineNumber":130,"author":{"gitId":"thaddeusong"},"content":" * Applications may create other stages, if needed, but they will not be","lastModifiedDate":"2023-09-06"},{"lineNumber":131,"author":{"gitId":"thaddeusong"},"content":" * primary stages.","lastModifiedDate":"2023-09-06"},{"lineNumber":132,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":133,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-09-06"},{"lineNumber":134,"author":{"gitId":"thaddeusong"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":135,"author":{"gitId":"thaddeusong"},"content":" this.ui \u003d new Ui(this);","lastModifiedDate":"2023-09-06"},{"lineNumber":136,"author":{"gitId":"thaddeusong"},"content":" ui.renderGui(primaryStage);","lastModifiedDate":"2023-09-06"},{"lineNumber":137,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":138,"author":{"gitId":"thaddeusong"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-09-06"},{"lineNumber":139,"author":{"gitId":"thaddeusong"},"content":" loadTaskList();","lastModifiedDate":"2023-09-06"},{"lineNumber":140,"author":{"gitId":"thaddeusong"},"content":" } catch (DukeException de) {","lastModifiedDate":"2023-09-06"},{"lineNumber":141,"author":{"gitId":"thaddeusong"},"content":" ui.showError(de);","lastModifiedDate":"2023-09-06"},{"lineNumber":142,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":143,"author":{"gitId":"thaddeusong"},"content":" ui.showMessage(Message.onGreeting(name).fromDuke());","lastModifiedDate":"2023-09-06"},{"lineNumber":144,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":145,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":146,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":147,"author":{"gitId":"thaddeusong"},"content":" * Handle a command.","lastModifiedDate":"2023-09-06"},{"lineNumber":148,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":149,"author":{"gitId":"thaddeusong"},"content":" * @param command The command to execute.","lastModifiedDate":"2023-09-06"},{"lineNumber":150,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":151,"author":{"gitId":"thaddeusong"},"content":" public void executeCommand(Command command) throws DukeException {","lastModifiedDate":"2023-09-06"},{"lineNumber":152,"author":{"gitId":"thaddeusong"},"content":" ui.showMessage(command.execute(this).fromDuke());","lastModifiedDate":"2023-09-06"},{"lineNumber":153,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":154,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"thaddeusong":154}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.command;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.application.Application;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.InvalidTaskIndexException;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.NoCommandFoundException;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.TaskIndexOutOfRangeException;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import duke.message.Message;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" * Represents an abstract command that interacts with the application with some content string.","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" protected String content;","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" protected Command(String content) {","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" this.content \u003d content;","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" * Creates a Command instance based on the given command name and content.","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" * @param commandName The name of the command.","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" * @param content The content associated with the command.","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" * @return A Command instance corresponding to the specified command name.","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" * @throws NoCommandFoundException If the provided command name is not recognized.","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" public static Command of(String commandName, String content)","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" throws NoCommandFoundException {","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" switch (commandName) {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" case \"bye\":","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" return new Bye(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" case \"todo\":","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" return new Todo(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" return new Deadline(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" case \"event\":","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" return new Event(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" case \"find\":","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" return new Find(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" case \"list\":","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" return new List(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" case \"mark\":","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" return new Mark(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" return new Unmark(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" case \"delete\":","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" return new Delete(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" throw new NoCommandFoundException(commandName + \" \" + content);","lastModifiedDate":"2023-09-15"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" * Executes the command and interacts with the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" * @param application The application instance with which the command interacts.","lastModifiedDate":"2023-08-31"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" * @return A Message instance representing the result of executing the command.","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2023-08-31"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" public abstract Message execute(Application application) throws DukeException;","lastModifiedDate":"2023-08-31"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to exit the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":"class Bye extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" protected Bye(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application) {","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" application.kill();","lastModifiedDate":"2023-08-31"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" return Message.onExit();","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to add a To-do task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":"class Todo extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" protected Todo(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" Task task \u003d Task.of(content, Task.TaskType.TODO);","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" application.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskAdd(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to add a Deadline task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":"class Deadline extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":" protected Deadline(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":" throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":" Task task \u003d Task.of(content, Task.TaskType.DEADLINE);","lastModifiedDate":"2023-08-31"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":" application.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskAdd(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":110,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to add an Event task to the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"thaddeusong"},"content":"class Event extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":114,"author":{"gitId":"thaddeusong"},"content":" protected Event(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":116,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":117,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":118,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":119,"author":{"gitId":"thaddeusong"},"content":" throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":120,"author":{"gitId":"thaddeusong"},"content":" Task task \u003d Task.of(content, Task.TaskType.EVENT);","lastModifiedDate":"2023-08-31"},{"lineNumber":121,"author":{"gitId":"thaddeusong"},"content":" application.addTask(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":122,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskAdd((task));","lastModifiedDate":"2023-08-31"},{"lineNumber":123,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":124,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":125,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":126,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":127,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to list tasks in the application.","lastModifiedDate":"2023-08-31"},{"lineNumber":128,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":129,"author":{"gitId":"thaddeusong"},"content":"class List extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":130,"author":{"gitId":"thaddeusong"},"content":" protected List(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":131,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":132,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":133,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":134,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application) {","lastModifiedDate":"2023-08-31"},{"lineNumber":135,"author":{"gitId":"thaddeusong"},"content":" return Message.accumulateList(Message.convertTasks(application.getTaskList()), \"\\n\").chainTo(","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"thaddeusong"},"content":" Message.onList(application.getTaskList()), \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":137,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":138,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":139,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":140,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":141,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to mark a task as completed.","lastModifiedDate":"2023-08-31"},{"lineNumber":142,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":143,"author":{"gitId":"thaddeusong"},"content":"class Mark extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":144,"author":{"gitId":"thaddeusong"},"content":" protected Mark(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":145,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":146,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":147,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":148,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":149,"author":{"gitId":"thaddeusong"},"content":" throws InvalidTaskIndexException, TaskIndexOutOfRangeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":150,"author":{"gitId":"thaddeusong"},"content":" int taskIndex;","lastModifiedDate":"2023-08-29"},{"lineNumber":151,"author":{"gitId":"thaddeusong"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":152,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":153,"author":{"gitId":"thaddeusong"},"content":" taskIndex \u003d Integer.parseInt(content) - 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":154,"author":{"gitId":"thaddeusong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":155,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTaskIndexException(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":156,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":157,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":158,"author":{"gitId":"thaddeusong"},"content":" task \u003d application.getTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":159,"author":{"gitId":"thaddeusong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":160,"author":{"gitId":"thaddeusong"},"content":" throw new TaskIndexOutOfRangeException(String.valueOf(taskIndex));","lastModifiedDate":"2023-08-29"},{"lineNumber":161,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":162,"author":{"gitId":"thaddeusong"},"content":" task.setCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":163,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskComplete(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":164,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":165,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":166,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":167,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":168,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to unmark a completed task.","lastModifiedDate":"2023-08-31"},{"lineNumber":169,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"thaddeusong"},"content":"class Unmark extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":171,"author":{"gitId":"thaddeusong"},"content":" protected Unmark(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":173,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":174,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":175,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"thaddeusong"},"content":" throws InvalidTaskIndexException, TaskIndexOutOfRangeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":177,"author":{"gitId":"thaddeusong"},"content":" int taskIndex;","lastModifiedDate":"2023-08-29"},{"lineNumber":178,"author":{"gitId":"thaddeusong"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":179,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":180,"author":{"gitId":"thaddeusong"},"content":" taskIndex \u003d Integer.parseInt(content) - 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":181,"author":{"gitId":"thaddeusong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":182,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTaskIndexException(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":183,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":184,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":185,"author":{"gitId":"thaddeusong"},"content":" task \u003d application.getTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":186,"author":{"gitId":"thaddeusong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":187,"author":{"gitId":"thaddeusong"},"content":" throw new TaskIndexOutOfRangeException(String.valueOf(taskIndex));","lastModifiedDate":"2023-08-29"},{"lineNumber":188,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":189,"author":{"gitId":"thaddeusong"},"content":" task.setUncompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":190,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskUncomplete(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":191,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":192,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":193,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":194,"author":{"gitId":"thaddeusong"},"content":"class Find extends Command {","lastModifiedDate":"2023-08-31"},{"lineNumber":195,"author":{"gitId":"thaddeusong"},"content":" public Find(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":196,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":197,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":198,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":199,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":200,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application) {","lastModifiedDate":"2023-08-31"},{"lineNumber":201,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskFind().chainTo(","lastModifiedDate":"2023-08-31"},{"lineNumber":202,"author":{"gitId":"thaddeusong"},"content":" Message.accumulateList(Message.convertTasks(application.findMatchingTasks(content)), \"\\n\"),","lastModifiedDate":"2023-08-31"},{"lineNumber":203,"author":{"gitId":"thaddeusong"},"content":" \"\\n\");","lastModifiedDate":"2023-08-31"},{"lineNumber":204,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":205,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-31"},{"lineNumber":206,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":207,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":208,"author":{"gitId":"thaddeusong"},"content":" * Represents a command to delete a task from the task list.","lastModifiedDate":"2023-08-31"},{"lineNumber":209,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":210,"author":{"gitId":"thaddeusong"},"content":"class Delete extends Command {","lastModifiedDate":"2023-08-29"},{"lineNumber":211,"author":{"gitId":"thaddeusong"},"content":" protected Delete(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":212,"author":{"gitId":"thaddeusong"},"content":" super(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":213,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":214,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":215,"author":{"gitId":"thaddeusong"},"content":" public Message execute(Application application)","lastModifiedDate":"2023-08-31"},{"lineNumber":216,"author":{"gitId":"thaddeusong"},"content":" throws InvalidTaskIndexException, TaskIndexOutOfRangeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":217,"author":{"gitId":"thaddeusong"},"content":" int taskIndex;","lastModifiedDate":"2023-08-29"},{"lineNumber":218,"author":{"gitId":"thaddeusong"},"content":" Task task;","lastModifiedDate":"2023-08-29"},{"lineNumber":219,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":220,"author":{"gitId":"thaddeusong"},"content":" taskIndex \u003d Integer.parseInt(content) - 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":221,"author":{"gitId":"thaddeusong"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":222,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTaskIndexException(content);","lastModifiedDate":"2023-08-29"},{"lineNumber":223,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":224,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":225,"author":{"gitId":"thaddeusong"},"content":" task \u003d application.getTask(taskIndex);","lastModifiedDate":"2023-08-31"},{"lineNumber":226,"author":{"gitId":"thaddeusong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":227,"author":{"gitId":"thaddeusong"},"content":" throw new TaskIndexOutOfRangeException(String.valueOf(taskIndex));","lastModifiedDate":"2023-08-29"},{"lineNumber":228,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":229,"author":{"gitId":"thaddeusong"},"content":" application.removeTask((task));","lastModifiedDate":"2023-08-31"},{"lineNumber":230,"author":{"gitId":"thaddeusong"},"content":" return Message.onTaskDelete(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":231,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":232,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":232}},{"path":"src/main/java/duke/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.duke;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.application.Application;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * Entrypoint for the application.","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class Duke {","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" javafx.application.Application.launch(Application.class, args);","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"thaddeusong":12}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An abstract class for custom exceptions specific to Duke.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public abstract class DukeException extends Exception {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" protected DukeException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" * Generates an error message object based on the exception\u0027s content.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * @return An ErrorMessage object representing the error message.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" public abstract ErrorMessage generateErrorMessage();","lastModifiedDate":"2023-09-15"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":20}},{"path":"src/main/java/duke/exception/DuplicateTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a duplicate task is added.","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class DuplicateTaskException extends DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public DuplicateTaskException(String message) {","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message + \" is already in the task list!\");","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage( getMessage() + \" is already in the task list!\");","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"thaddeusong":15}},{"path":"src/main/java/duke/exception/EmptyTaskDescException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a task description is empty.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class EmptyTaskDescException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public EmptyTaskDescException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(\"A task description cannot be empty.\");","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":19}},{"path":"src/main/java/duke/exception/FileNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when the file cannot be found.","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"public class FileNotFoundException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":" public FileNotFoundException(String name) {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" super(name);","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(\"There is no file at \" + getMessage());","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":15}},{"path":"src/main/java/duke/exception/InvalidTaskFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a task format is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class InvalidTaskFormatException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public InvalidTaskFormatException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(getMessage() + \" isn\u0027t the right format for this kind of task.\");","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":17}},{"path":"src/main/java/duke/exception/InvalidTaskIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a task index is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class InvalidTaskIndexException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public InvalidTaskIndexException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(getMessage() + \" isn\u0027t a number.\");","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":17}},{"path":"src/main/java/duke/exception/InvalidTimeFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a time format is invalid.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class InvalidTimeFormatException extends DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public InvalidTimeFormatException(String message) {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(getMessage() + \" isn\u0027t the right time format.\");","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"thaddeusong":17}},{"path":"src/main/java/duke/exception/NoCommandFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a no matching command is found.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class NoCommandFoundException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public NoCommandFoundException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(\"Sorry, I don\u0027t know what \" + getMessage() + \" means.\");","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":18}},{"path":"src/main/java/duke/exception/TaskIndexOutOfRangeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.exception;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.message.ErrorMessage;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * An exception that is thrown when a task index is out of range.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class TaskIndexOutOfRangeException extends DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" public TaskIndexOutOfRangeException(String message) {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" super(message);","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-29"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage generateErrorMessage() {","lastModifiedDate":"2023-09-15"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" return new ErrorMessage(getMessage() + 1 + \" is out of range of the task list.\");","lastModifiedDate":"2023-09-15"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":17}},{"path":"src/main/java/duke/message/ErrorMessage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.message;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2023-09-15"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * Represents an error message that can be displayed to the user.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" * Extends the {@link Message} class.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"public class ErrorMessage extends Message {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" private static final Color ERROR_COLOR \u003d Color.RED;","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" public ErrorMessage(String content) {","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" super(content, BOT_IMAGE, ERROR_COLOR);","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":15}},{"path":"src/main/java/duke/message/Message.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.message;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Task;","lastModifiedDate":"2023-09-05"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2023-09-15"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * Represent a message that can be displayed in the GUI.","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"public class Message extends HBox {","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" protected static final Image USER_IMAGE \u003d","lastModifiedDate":"2023-09-15"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" new Image(\"https://se-education.org/guides/tutorials/images/javafx/DaUser.png\");","lastModifiedDate":"2023-09-12"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" protected static final Image BOT_IMAGE \u003d","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" new Image(\"https://se-education.org/guides/tutorials/images/javafx/DaDuke.png\");","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" private final String content;","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" private final Label label;","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" private ImageView image;","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" private Color color \u003d Color.BLACK;","lastModifiedDate":"2023-09-15"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" * Constructs a message with the given content.","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" * @param content The content of the message.","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" public Message(String content) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" this.content \u003d content;","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" //Set label contents and formatting","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" this.label \u003d new Label();","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" label.setText(content);","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" label.setWrapText(true);","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" label.setTextFill(color);","lastModifiedDate":"2023-09-15"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" this.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" this.getChildren().addAll(this.label);","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" * Constructs a message with the given content and image.","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" * @param content The content of the message.","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" * @param image The image associated with the message.","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" public Message(String content, Image image) {","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" this(content);","lastModifiedDate":"2023-09-06"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" this.image \u003d new ImageView();","lastModifiedDate":"2023-09-06"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" //Set image contents and formatting","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" this.image.setImage(image);","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" this.image.setFitWidth(100.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" this.image.setFitHeight(100.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" this.getChildren().addAll(this.image);","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" * Constructs a message with the given content, image and text color.","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" * @param content The content of the message.","lastModifiedDate":"2023-09-15"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" * @param image The image associated with this message.","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" * @param color The color of the text.","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" public Message(String content, Image image, Color color) {","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" this(content, image);","lastModifiedDate":"2023-09-15"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" this.color \u003d color;","lastModifiedDate":"2023-09-15"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" label.setTextFill(color);","lastModifiedDate":"2023-09-15"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" * Converts a list of tasks into a list of messages.","lastModifiedDate":"2023-09-06"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" * @param taskList The list of tasks to convert.","lastModifiedDate":"2023-09-06"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" * @return A list of messages representing the tasks.","lastModifiedDate":"2023-09-06"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" public static List\u003cMessage\u003e convertTasks(TaskList taskList) {","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" List\u003cMessage\u003e messages \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":" for (int i \u003d 0; i \u003c taskList.getTaskCount(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" messages.add((new Message((i + 1) + \". \" + taskList.getTask(i).toString())));","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" return messages;","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" public static Message onGreeting(String name) {","lastModifiedDate":"2023-08-31"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"Hello, I\u0027m \" + name + \".\\n\" + \"What can I do for you?\");","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":" public static Message onExit() {","lastModifiedDate":"2023-08-31"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":" public static Message onTaskAdd(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"added: \" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":" public static Message onTaskComplete(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"Nice! I\u0027ve marked this task as done:\\n\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":" public static Message onTaskUncomplete(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"OK, I\u0027ve marked this task as not done yet:\\n\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":" public static Message onTaskDelete(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"I\u0027ve removed this task: \\n\" + task.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"thaddeusong"},"content":" public static Message onTaskFind() {","lastModifiedDate":"2023-08-31"},{"lineNumber":111,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"Here are the matching tasks in your list\");","lastModifiedDate":"2023-08-31"},{"lineNumber":112,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"thaddeusong"},"content":" public static Message onList(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":114,"author":{"gitId":"thaddeusong"},"content":" return new Message(\"There are \" + tasks.getTaskCount() + \" tasks in the list.\");","lastModifiedDate":"2023-08-31"},{"lineNumber":115,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":117,"author":{"gitId":"thaddeusong"},"content":" public Message chainTo(Message message, String splitString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":118,"author":{"gitId":"thaddeusong"},"content":" return new Message(this.content + splitString + message.content);","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":122,"author":{"gitId":"thaddeusong"},"content":" * Accumulates a list of messages into a single message with specified splitting text.","lastModifiedDate":"2023-09-06"},{"lineNumber":123,"author":{"gitId":"thaddeusong"},"content":" * Messages in the list are concatenated together with the specified splitting text.","lastModifiedDate":"2023-09-06"},{"lineNumber":124,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":125,"author":{"gitId":"thaddeusong"},"content":" * @param messages The list of messages to accumulate.","lastModifiedDate":"2023-09-06"},{"lineNumber":126,"author":{"gitId":"thaddeusong"},"content":" * @param splitString The text to be used for splitting the messages.","lastModifiedDate":"2023-09-06"},{"lineNumber":127,"author":{"gitId":"thaddeusong"},"content":" * @return A message containing the accumulated text.","lastModifiedDate":"2023-09-06"},{"lineNumber":128,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":129,"author":{"gitId":"thaddeusong"},"content":" public static Message accumulateList(List\u003c? extends Message\u003e messages, String splitString) {","lastModifiedDate":"2023-08-31"},{"lineNumber":130,"author":{"gitId":"thaddeusong"},"content":" Message chainedMessage \u003d new Message(\"\");","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"thaddeusong"},"content":" if (messages.size() \u003e 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"thaddeusong"},"content":" chainedMessage \u003d messages.get(0);","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"thaddeusong"},"content":" for (int i \u003d 1; i \u003c messages.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":134,"author":{"gitId":"thaddeusong"},"content":" Message message \u003d messages.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"thaddeusong"},"content":" chainedMessage \u003d chainedMessage.chainTo(message, splitString);","lastModifiedDate":"2023-08-31"},{"lineNumber":136,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"thaddeusong"},"content":" return chainedMessage;","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-15"},{"lineNumber":143,"author":{"gitId":"thaddeusong"},"content":" * Returns a copy of this Message instance.","lastModifiedDate":"2023-09-15"},{"lineNumber":144,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-15"},{"lineNumber":145,"author":{"gitId":"thaddeusong"},"content":" * @return A clone of this message.","lastModifiedDate":"2023-09-15"},{"lineNumber":146,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-15"},{"lineNumber":147,"author":{"gitId":"thaddeusong"},"content":" protected Message clone() {","lastModifiedDate":"2023-09-15"},{"lineNumber":148,"author":{"gitId":"thaddeusong"},"content":" return new Message(this.content, this.image.getImage(), this.color);","lastModifiedDate":"2023-09-15"},{"lineNumber":149,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":150,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":151,"author":{"gitId":"thaddeusong"},"content":" * Flips the message, changing its alignment and layout.","lastModifiedDate":"2023-09-06"},{"lineNumber":152,"author":{"gitId":"thaddeusong"},"content":" * This method creates a new message with the same content but with the image on the left side.","lastModifiedDate":"2023-09-06"},{"lineNumber":153,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":154,"author":{"gitId":"thaddeusong"},"content":" * @return A flipped message.","lastModifiedDate":"2023-09-06"},{"lineNumber":155,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":156,"author":{"gitId":"thaddeusong"},"content":" public Message flip() {","lastModifiedDate":"2023-09-06"},{"lineNumber":157,"author":{"gitId":"thaddeusong"},"content":" Message flippedMessage \u003d clone();","lastModifiedDate":"2023-09-15"},{"lineNumber":158,"author":{"gitId":"thaddeusong"},"content":" flippedMessage.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-06"},{"lineNumber":159,"author":{"gitId":"thaddeusong"},"content":" flippedMessage.getChildren().clear();","lastModifiedDate":"2023-09-06"},{"lineNumber":160,"author":{"gitId":"thaddeusong"},"content":" flippedMessage.getChildren().addAll(flippedMessage.image, flippedMessage.label);","lastModifiedDate":"2023-09-06"},{"lineNumber":161,"author":{"gitId":"thaddeusong"},"content":" return flippedMessage;","lastModifiedDate":"2023-09-06"},{"lineNumber":162,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":163,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-15"},{"lineNumber":164,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":165,"author":{"gitId":"thaddeusong"},"content":" * Formats the message such that it appears on the users side.","lastModifiedDate":"2023-09-06"},{"lineNumber":166,"author":{"gitId":"thaddeusong"},"content":" * @return A message from the user.","lastModifiedDate":"2023-09-06"},{"lineNumber":167,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":168,"author":{"gitId":"thaddeusong"},"content":" public Message fromUser() {","lastModifiedDate":"2023-09-06"},{"lineNumber":169,"author":{"gitId":"thaddeusong"},"content":" return new Message(this.content, USER_IMAGE, color);","lastModifiedDate":"2023-09-15"},{"lineNumber":170,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":171,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":172,"author":{"gitId":"thaddeusong"},"content":" * Formats the message such that it appears on the bots side.","lastModifiedDate":"2023-09-06"},{"lineNumber":173,"author":{"gitId":"thaddeusong"},"content":" * @return A message from the bot.","lastModifiedDate":"2023-09-06"},{"lineNumber":174,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":175,"author":{"gitId":"thaddeusong"},"content":" public Message fromDuke() {","lastModifiedDate":"2023-09-06"},{"lineNumber":176,"author":{"gitId":"thaddeusong"},"content":" return new Message(this.content, BOT_IMAGE, color).flip();","lastModifiedDate":"2023-09-15"},{"lineNumber":177,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":179,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":180,"author":{"gitId":"thaddeusong"},"content":" public String toString() {","lastModifiedDate":"2023-08-31"},{"lineNumber":181,"author":{"gitId":"thaddeusong"},"content":" return content;","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"thaddeusong":184}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.storage;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import java.io.File;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.FileNotFoundException;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" * Represents a text-file based storage.","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"public class Storage {","lastModifiedDate":"2023-08-29"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" private final File file;","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" private final BufferedWriter bufferedWriter;","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" * Constructor for a Storage instance.","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" * @param filePath The file path to the text file.","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" * @throws FileNotFoundException If no file exists at the filePath.","lastModifiedDate":"2023-09-06"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" public Storage(String filePath) throws FileNotFoundException {","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" file \u003d new File(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" bufferedWriter \u003d new BufferedWriter(new FileWriter(file, true));","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" throw new FileNotFoundException(filePath);","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" * Write a line into the text file.","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" * @param line The line to add.","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" public void addLine(String line) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" bufferedWriter.write(line);","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" bufferedWriter.flush();","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" * Get a line from the text file.","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" * @param index The index of the line.","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" * @return The line at the given index.","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" public String getLine(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-29"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(new FileReader(file));","lastModifiedDate":"2023-08-29"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" String line;","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" int currentLine \u003d 1;","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-29"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" if (index \u003d\u003d currentLine) {","lastModifiedDate":"2023-08-29"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" return line;","lastModifiedDate":"2023-08-29"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" currentLine++;","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-29"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" return \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" * Clear the file of all text.","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" public void clear() {","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" // Create a FileWriter with the given file path","lastModifiedDate":"2023-09-05"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-31"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" // Overwrite the file content with an empty string","lastModifiedDate":"2023-08-31"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" fileWriter.write(\"\");","lastModifiedDate":"2023-08-31"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" // Close the FileWriter","lastModifiedDate":"2023-08-31"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-31"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-31"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":84}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.InvalidTaskFormatException;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.InvalidTimeFormatException;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" * Represents a deadline task that has a name and deadline time.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * Extends the {@link Task} class.","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" private final LocalDateTime deadlineTime;","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" * Constructor for a Deadline task.","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" * @param task The information about the Deadline task.","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException when formatting errors occur.","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" public Deadline(String task) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" super(task.split(\"/\", 2)[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" String[] taskComponents \u003d task.split(\"/\", 2);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" String[] timeComponents;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" timeComponents \u003d taskComponents[1].split(\" \", 3);","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" if (timeComponents.length \u003c 3) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTaskFormatException(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" deadlineTime \u003d LocalDateTime.of(LocalDate.parse(timeComponents[1]),","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" LocalTime.parse(timeComponents[2]));","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" * Returns a Deadline object parsed from the save format.","lastModifiedDate":"2023-09-05"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" * @param savedTask The string representing the task in the save format.","lastModifiedDate":"2023-09-05"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" * @return A new Deadline object.","lastModifiedDate":"2023-09-05"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException when the formatting is wrong.","lastModifiedDate":"2023-09-05"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" public static Deadline parseSaveFormat(String savedTask) throws DukeException {","lastModifiedDate":"2023-09-05"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" String[] components \u003d savedTask.split(\"\\\\|\", 3);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" Deadline task \u003d new Deadline(components[1] + \"/by \" + components[0]);","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" if (components[2].equals(\"true\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" task.setCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" } else {","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" task.setUncompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadlineTime.toLocalDate().toString() + \",\"","lastModifiedDate":"2023-08-30"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" + deadlineTime.toLocalTime().toString() + \")\";","lastModifiedDate":"2023-08-30"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" * Converts this Deadline into a save format string.","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" * @return A string representing this Deadline.","lastModifiedDate":"2023-09-05"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" return \"deadline:\" + deadlineTime.toLocalDate().toString() + \" \"","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" + deadlineTime.toLocalTime().toString() + \"|\" + super.toSaveFormat();","lastModifiedDate":"2023-08-30"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":77}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-30"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.InvalidTaskFormatException;","lastModifiedDate":"2023-09-05"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.InvalidTimeFormatException;","lastModifiedDate":"2023-09-05"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" * Represents an event task that has a name, start time, and end time.","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" * Extends the {@link Task} class.","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" private final LocalDateTime startTime;","lastModifiedDate":"2023-09-05"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" private final LocalDateTime endTime;","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" * Constructor for an Event Task.","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" * @param task The information about the Event task.","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException When formatting errors occur.","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" public Event(String task) throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" super(task.split(\"/\", 3)[0]);","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" String[] taskComponents \u003d task.split(\"/\", 3);","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" String[] startTimeComponents;","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" String[] endTimeComponents;","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" startTimeComponents \u003d taskComponents[1].split(\" \", 3);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" endTimeComponents \u003d taskComponents[2].split(\" \", 3);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTaskFormatException(task);","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" if (startTimeComponents.length \u003c 3) {","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" this.startTime \u003d LocalDateTime.of(LocalDate.parse(startTimeComponents[1]),","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" LocalTime.parse(startTimeComponents[2]));","lastModifiedDate":"2023-08-30"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" if (endTimeComponents.length \u003c 2) {","lastModifiedDate":"2023-08-30"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" this.endTime \u003d LocalDateTime.of(LocalDate.parse(endTimeComponents[1]),","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" LocalTime.parse(endTimeComponents[2]));","lastModifiedDate":"2023-08-31"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" throw new InvalidTimeFormatException(taskComponents[2]);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" * Returns a Event object parsed from the save format.","lastModifiedDate":"2023-09-05"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" * @param savedTask The string representing the task in the save format.","lastModifiedDate":"2023-09-05"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" * @return A new Deadline object.","lastModifiedDate":"2023-09-05"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException when the formatting is wrong.","lastModifiedDate":"2023-09-05"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" public static Event parseSaveFormat(String savedTask) throws DukeException {","lastModifiedDate":"2023-09-05"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" String[] components \u003d savedTask.split(\"\\\\|\", 4);","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" Event task \u003d new Event(components[2] + \"/from \" + components[0] + \"/to \" + components[1]);","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" if (components[3].equals(\"true\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" task.setCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" } else {","lastModifiedDate":"2023-09-05"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" task.setUncompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" return \"[E]\" + super.toString() + \" (from: \"","lastModifiedDate":"2023-09-05"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" + startTime.toLocalDate().toString() + \",\" + startTime.toLocalTime().toString() + \" to: \"","lastModifiedDate":"2023-09-05"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" + endTime.toLocalDate().toString() + \",\" + endTime.toLocalTime().toString() + \")\";","lastModifiedDate":"2023-09-05"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-05"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-05"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" * Converts this Event into a save format string.","lastModifiedDate":"2023-09-05"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" * @return A string representing this Deadline.","lastModifiedDate":"2023-09-05"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-05"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":" return \"event:\"","lastModifiedDate":"2023-09-05"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" + startTime.toLocalDate().toString() + \" \" + startTime.toLocalTime().toString() + \"|\"","lastModifiedDate":"2023-09-05"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" + endTime.toLocalDate().toString() + \" \" + endTime.toLocalTime() + \"|\" + super.toSaveFormat();","lastModifiedDate":"2023-09-05"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":90}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.EmptyTaskDescException;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.NoCommandFoundException;","lastModifiedDate":"2023-09-05"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":" * Represents a task with a name and completion status.","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" private final String name;","lastModifiedDate":"2023-09-05"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" private boolean completed \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" * Constructor for a Task instance.","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * @param name The name/description of the task.","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" * @throws EmptyTaskDescException If the name is empty.","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" public Task(String name) throws EmptyTaskDescException {","lastModifiedDate":"2023-09-05"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" if (name.isBlank()) {","lastModifiedDate":"2023-09-05"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" throw new EmptyTaskDescException(\"Name cannot be blank.\");","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" this.name \u003d name;","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" * Parses a task from a line of text.","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" * @param line The line of text containing task information.","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" * @return A Task object parsed from the input line.","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If there\u0027s an issue with parsing the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" public static Task parse(String line)","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" throws DukeException {","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" String[] components \u003d line.split(\":\", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" TaskType taskType \u003d components[0].equals(\"todo\") ? TaskType.TODO","lastModifiedDate":"2023-08-29"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" : components[0].equals(\"deadline\") ? TaskType.DEADLINE","lastModifiedDate":"2023-08-29"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" : TaskType.EVENT;","lastModifiedDate":"2023-08-29"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" String content \u003d components[1];","lastModifiedDate":"2023-08-29"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-29"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" case TODO:","lastModifiedDate":"2023-08-29"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" return Todo.parseSaveFormat(content);","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-29"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" return Deadline.parseSaveFormat(content);","lastModifiedDate":"2023-09-05"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" case EVENT:","lastModifiedDate":"2023-08-29"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" return Event.parseSaveFormat(content);","lastModifiedDate":"2023-09-05"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" default:","lastModifiedDate":"2023-08-29"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" throw new NoCommandFoundException(taskType.name());","lastModifiedDate":"2023-08-29"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" public boolean containsString(String content) {","lastModifiedDate":"2023-08-31"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" return name.contains(content);","lastModifiedDate":"2023-08-31"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" * The different types of tasks.","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" public enum TaskType {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" TODO,","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":" DEADLINE,","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" EVENT","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-08-31"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" * Creates a Task object based on the provided content and task type.","lastModifiedDate":"2023-08-31"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-08-31"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" * @param task The content of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" * @param taskType The type of the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" * @return A Task object of the specified type.","lastModifiedDate":"2023-08-31"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If there\u0027s an issue with creating the task.","lastModifiedDate":"2023-08-31"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" public static Task of(String task, TaskType taskType)","lastModifiedDate":"2023-08-31"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" throws DukeException {","lastModifiedDate":"2023-08-29"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" return new Todo(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" return new Deadline(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" return new Event(task);","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" throw new NoCommandFoundException(taskType.name());","lastModifiedDate":"2023-08-29"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" public void setCompleted() {","lastModifiedDate":"2023-08-31"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":" completed \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" public void setUncompleted() {","lastModifiedDate":"2023-08-31"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" completed \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":" public String getName() {","lastModifiedDate":"2023-09-13"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":" return name;","lastModifiedDate":"2023-09-13"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-09-13"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":" public boolean equals(Object obj) {","lastModifiedDate":"2023-09-13"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":" return obj instanceof Task \u0026\u0026 ((Task) obj).name.equals(name);","lastModifiedDate":"2023-09-13"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":" return completed ? \"[X] \" + name : \"[ ] \" + name;","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":" return name + \"|\" + completed;","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"thaddeusong":109}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import java.util.List;","lastModifiedDate":"2023-08-31"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DuplicateTaskException;","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" * Represents a list of Tasks.","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"public class TaskList {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" private final List\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-09-12"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * @param task The task to add.","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" public void addTask(Task task) throws DuplicateTaskException {","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" if (taskList.contains(task)) {","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" throw new DuplicateTaskException(task.getName());","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" * Returns a task from the task list.","lastModifiedDate":"2023-09-12"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" * @param index The index of the task.","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" * @return The task at the given index.","lastModifiedDate":"2023-09-12"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" assert index \u003c taskList.size();","lastModifiedDate":"2023-09-12"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" return taskList.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" * Removes a task from the task list.","lastModifiedDate":"2023-09-12"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" * @param task The task to remove.","lastModifiedDate":"2023-09-12"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" public void removeTask(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" assert taskList.contains(task);","lastModifiedDate":"2023-09-12"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" taskList.remove(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" * Returns the size of the task list.","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" * @return THe number of tasks in the list.","lastModifiedDate":"2023-09-12"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-12"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-31"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" return taskList.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"thaddeusong":51}},{"path":"src/main/java/duke/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.task;","lastModifiedDate":"2023-09-05"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.EmptyTaskDescException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * Represents a to-do task that has a name.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" * Extends the {@link Task} class.","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" public Todo(String task) throws EmptyTaskDescException {","lastModifiedDate":"2023-08-29"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" super(task);","lastModifiedDate":"2023-08-29"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" * Returns a To-do object parsed from the save format.","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" * @param savedTask The string representing the task in the save format.","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" * @return A new To-do object.","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" public static Todo parseSaveFormat(String savedTask) throws EmptyTaskDescException {","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" String[] components \u003d savedTask.split(\"\\\\|\", 2);","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" Todo task \u003d new Todo(components[0]);","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" if (components[1].equals(\"true\")) {","lastModifiedDate":"2023-09-05"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" task.setCompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" } else {","lastModifiedDate":"2023-09-05"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" task.setUncompleted();","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-05"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":" return task;","lastModifiedDate":"2023-08-29"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":" @Override","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" public String toString() {","lastModifiedDate":"2023-08-29"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" public String toSaveFormat() {","lastModifiedDate":"2023-08-29"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":" return \"todo:\" + super.toSaveFormat();","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":36}},{"path":"src/main/java/duke/ui/InputParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-05"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":" * Parses user input and returns the corresponding command object.","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"public class InputParser {","lastModifiedDate":"2023-08-29"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" * Parses an input line into a command.","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" * @param input The string input.","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" * @return A Command object representing the input.","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If the input has formatting errors.","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" public Command parseInput(String input) throws DukeException {","lastModifiedDate":"2023-09-05"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" String[] inputComponents \u003d input.trim().split(\" \", 2);","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" String commandName \u003d inputComponents[0];","lastModifiedDate":"2023-08-29"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" String content \u003d \"\";","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" if (inputComponents.length \u003e 1) {","lastModifiedDate":"2023-08-29"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" content \u003d inputComponents[1];","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" return Command.of(commandName, content);","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-29"}],"authorContributionMap":{"thaddeusong":24}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package duke.ui;","lastModifiedDate":"2023-09-06"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.application.Application;","lastModifiedDate":"2023-09-06"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.command.Command;","lastModifiedDate":"2023-09-06"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-06"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"import duke.message.Message;","lastModifiedDate":"2023-09-06"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-06"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-06"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-06"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2023-09-06"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-06"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":"/**","lastModifiedDate":"2023-09-06"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" * Handles user interactions, input parsing, and displaying messages.","lastModifiedDate":"2023-09-06"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"public class Ui {","lastModifiedDate":"2023-09-06"},{"lineNumber":20,"author":{"gitId":"thaddeusong"},"content":" private static final double GUI_WIDTH \u003d 800.0;","lastModifiedDate":"2023-09-06"},{"lineNumber":21,"author":{"gitId":"thaddeusong"},"content":" private static final double GUI_HEIGHT \u003d 600.0;","lastModifiedDate":"2023-09-06"},{"lineNumber":22,"author":{"gitId":"thaddeusong"},"content":" private static final double SCROLL_BAR_WIDTH \u003d 15.0;","lastModifiedDate":"2023-09-12"},{"lineNumber":23,"author":{"gitId":"thaddeusong"},"content":" private static final double INPUT_FIELD_HEIGHT \u003d 65.0;","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"thaddeusong"},"content":" private static final double SEND_BUTTON_WIDTH \u003d 75.0;","lastModifiedDate":"2023-09-12"},{"lineNumber":25,"author":{"gitId":"thaddeusong"},"content":" private final InputParser parser \u003d new InputParser();","lastModifiedDate":"2023-09-06"},{"lineNumber":26,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":27,"author":{"gitId":"thaddeusong"},"content":" private final Application application;","lastModifiedDate":"2023-09-06"},{"lineNumber":28,"author":{"gitId":"thaddeusong"},"content":" private Stage primaryStage;","lastModifiedDate":"2023-09-06"},{"lineNumber":29,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":30,"author":{"gitId":"thaddeusong"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-06"},{"lineNumber":31,"author":{"gitId":"thaddeusong"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-06"},{"lineNumber":32,"author":{"gitId":"thaddeusong"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-06"},{"lineNumber":33,"author":{"gitId":"thaddeusong"},"content":" //GUI Window dimensions","lastModifiedDate":"2023-09-06"},{"lineNumber":34,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":35,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":36,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":37,"author":{"gitId":"thaddeusong"},"content":" * Constructor for this class.","lastModifiedDate":"2023-09-06"},{"lineNumber":38,"author":{"gitId":"thaddeusong"},"content":" * @param application The application that interfaces with this UI.","lastModifiedDate":"2023-09-06"},{"lineNumber":39,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":40,"author":{"gitId":"thaddeusong"},"content":" public Ui(Application application) {","lastModifiedDate":"2023-09-06"},{"lineNumber":41,"author":{"gitId":"thaddeusong"},"content":" this.application \u003d application;","lastModifiedDate":"2023-09-06"},{"lineNumber":42,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":43,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":44,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":45,"author":{"gitId":"thaddeusong"},"content":" * Parses the next line of user input into a Command object.","lastModifiedDate":"2023-09-06"},{"lineNumber":46,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":47,"author":{"gitId":"thaddeusong"},"content":" * @return A Command object corresponding to the parsed user input.","lastModifiedDate":"2023-09-06"},{"lineNumber":48,"author":{"gitId":"thaddeusong"},"content":" * @throws DukeException If there\u0027s an issue with parsing the input or creating the command.","lastModifiedDate":"2023-09-06"},{"lineNumber":49,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":50,"author":{"gitId":"thaddeusong"},"content":" public Command parseLine(String line) throws DukeException {","lastModifiedDate":"2023-09-06"},{"lineNumber":51,"author":{"gitId":"thaddeusong"},"content":" return parser.parseInput(line);","lastModifiedDate":"2023-09-06"},{"lineNumber":52,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":53,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":54,"author":{"gitId":"thaddeusong"},"content":" * Displays the provided message to the user.","lastModifiedDate":"2023-09-06"},{"lineNumber":55,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":56,"author":{"gitId":"thaddeusong"},"content":" * @param message The message to be displayed.","lastModifiedDate":"2023-09-06"},{"lineNumber":57,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":58,"author":{"gitId":"thaddeusong"},"content":" public void showMessage(Message message) {","lastModifiedDate":"2023-09-06"},{"lineNumber":59,"author":{"gitId":"thaddeusong"},"content":" dialogContainer.getChildren().addAll(message);","lastModifiedDate":"2023-09-06"},{"lineNumber":60,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":61,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":62,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":63,"author":{"gitId":"thaddeusong"},"content":" * Displays an error message generated from the provided DukeException.","lastModifiedDate":"2023-09-06"},{"lineNumber":64,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":65,"author":{"gitId":"thaddeusong"},"content":" * @param e The DukeException that triggered the error.","lastModifiedDate":"2023-09-06"},{"lineNumber":66,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":67,"author":{"gitId":"thaddeusong"},"content":" public void showError(DukeException e) {","lastModifiedDate":"2023-09-06"},{"lineNumber":68,"author":{"gitId":"thaddeusong"},"content":" dialogContainer.getChildren().addAll(e.generateErrorMessage().fromDuke());","lastModifiedDate":"2023-09-15"},{"lineNumber":69,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":70,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":71,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":72,"author":{"gitId":"thaddeusong"},"content":" * Render the GUI.","lastModifiedDate":"2023-09-06"},{"lineNumber":73,"author":{"gitId":"thaddeusong"},"content":" * @param stage The primary stage for the GUI.","lastModifiedDate":"2023-09-06"},{"lineNumber":74,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":75,"author":{"gitId":"thaddeusong"},"content":" public void renderGui(Stage stage) {","lastModifiedDate":"2023-09-06"},{"lineNumber":76,"author":{"gitId":"thaddeusong"},"content":" primaryStage \u003d stage;","lastModifiedDate":"2023-09-06"},{"lineNumber":77,"author":{"gitId":"thaddeusong"},"content":" //Init text pane","lastModifiedDate":"2023-09-06"},{"lineNumber":78,"author":{"gitId":"thaddeusong"},"content":" scrollPane \u003d new ScrollPane();","lastModifiedDate":"2023-09-06"},{"lineNumber":79,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setPrefSize(GUI_WIDTH - SCROLL_BAR_WIDTH, GUI_HEIGHT - INPUT_FIELD_HEIGHT);","lastModifiedDate":"2023-09-12"},{"lineNumber":80,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2023-09-06"},{"lineNumber":81,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2023-09-06"},{"lineNumber":82,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":83,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2023-09-06"},{"lineNumber":84,"author":{"gitId":"thaddeusong"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":85,"author":{"gitId":"thaddeusong"},"content":" //Init dialog container","lastModifiedDate":"2023-09-06"},{"lineNumber":86,"author":{"gitId":"thaddeusong"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2023-09-06"},{"lineNumber":87,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2023-09-06"},{"lineNumber":88,"author":{"gitId":"thaddeusong"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2023-09-06"},{"lineNumber":89,"author":{"gitId":"thaddeusong"},"content":" //Init text input","lastModifiedDate":"2023-09-06"},{"lineNumber":90,"author":{"gitId":"thaddeusong"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2023-09-06"},{"lineNumber":91,"author":{"gitId":"thaddeusong"},"content":" userInput.setPrefWidth(GUI_WIDTH - SEND_BUTTON_WIDTH);","lastModifiedDate":"2023-09-12"},{"lineNumber":92,"author":{"gitId":"thaddeusong"},"content":" AnchorPane.setLeftAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":93,"author":{"gitId":"thaddeusong"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":94,"author":{"gitId":"thaddeusong"},"content":" //Init send button","lastModifiedDate":"2023-09-06"},{"lineNumber":95,"author":{"gitId":"thaddeusong"},"content":" Button sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2023-09-06"},{"lineNumber":96,"author":{"gitId":"thaddeusong"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":97,"author":{"gitId":"thaddeusong"},"content":" AnchorPane.setRightAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":98,"author":{"gitId":"thaddeusong"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2023-09-06"},{"lineNumber":99,"author":{"gitId":"thaddeusong"},"content":" //Handle user events","lastModifiedDate":"2023-09-06"},{"lineNumber":100,"author":{"gitId":"thaddeusong"},"content":" sendButton.setOnMouseClicked((event) -\u003e handleUserInput());","lastModifiedDate":"2023-09-06"},{"lineNumber":101,"author":{"gitId":"thaddeusong"},"content":" userInput.setOnAction((event) -\u003e handleUserInput());","lastModifiedDate":"2023-09-06"},{"lineNumber":102,"author":{"gitId":"thaddeusong"},"content":" //Add nodes to main layout","lastModifiedDate":"2023-09-06"},{"lineNumber":103,"author":{"gitId":"thaddeusong"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2023-09-06"},{"lineNumber":104,"author":{"gitId":"thaddeusong"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2023-09-06"},{"lineNumber":105,"author":{"gitId":"thaddeusong"},"content":" Scene scene \u003d new Scene(mainLayout);","lastModifiedDate":"2023-09-06"},{"lineNumber":106,"author":{"gitId":"thaddeusong"},"content":" //Update node dimensions if window is resized","lastModifiedDate":"2023-09-06"},{"lineNumber":107,"author":{"gitId":"thaddeusong"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2023-09-06"},{"lineNumber":108,"author":{"gitId":"thaddeusong"},"content":" stage.heightProperty().addListener((observable) -\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":109,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setPrefHeight(stage.getHeight() - INPUT_FIELD_HEIGHT));","lastModifiedDate":"2023-09-12"},{"lineNumber":110,"author":{"gitId":"thaddeusong"},"content":" stage.widthProperty().addListener((observable) -\u003e {","lastModifiedDate":"2023-09-06"},{"lineNumber":111,"author":{"gitId":"thaddeusong"},"content":" scrollPane.setPrefWidth(stage.getWidth() - SCROLL_BAR_WIDTH);","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"thaddeusong"},"content":" userInput.setPrefWidth(stage.getWidth() - SEND_BUTTON_WIDTH);","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"thaddeusong"},"content":" });","lastModifiedDate":"2023-09-06"},{"lineNumber":114,"author":{"gitId":"thaddeusong"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-06"},{"lineNumber":115,"author":{"gitId":"thaddeusong"},"content":" stage.show();","lastModifiedDate":"2023-09-06"},{"lineNumber":116,"author":{"gitId":"thaddeusong"},"content":" stage.setOnCloseRequest(event -\u003e application.kill());","lastModifiedDate":"2023-09-06"},{"lineNumber":117,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":118,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":119,"author":{"gitId":"thaddeusong"},"content":" /**","lastModifiedDate":"2023-09-06"},{"lineNumber":120,"author":{"gitId":"thaddeusong"},"content":" *","lastModifiedDate":"2023-09-06"},{"lineNumber":121,"author":{"gitId":"thaddeusong"},"content":" */","lastModifiedDate":"2023-09-06"},{"lineNumber":122,"author":{"gitId":"thaddeusong"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-06"},{"lineNumber":123,"author":{"gitId":"thaddeusong"},"content":" try {","lastModifiedDate":"2023-09-06"},{"lineNumber":124,"author":{"gitId":"thaddeusong"},"content":" dialogContainer.getChildren().addAll(new Message(userInput.getText()).fromUser());","lastModifiedDate":"2023-09-06"},{"lineNumber":125,"author":{"gitId":"thaddeusong"},"content":" application.executeCommand(parseLine(userInput.getText()));","lastModifiedDate":"2023-09-06"},{"lineNumber":126,"author":{"gitId":"thaddeusong"},"content":" } catch (DukeException de) {","lastModifiedDate":"2023-09-06"},{"lineNumber":127,"author":{"gitId":"thaddeusong"},"content":" showError(de);","lastModifiedDate":"2023-09-06"},{"lineNumber":128,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":129,"author":{"gitId":"thaddeusong"},"content":" userInput.clear();","lastModifiedDate":"2023-09-06"},{"lineNumber":130,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":131,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-09-06"},{"lineNumber":132,"author":{"gitId":"thaddeusong"},"content":" public void closeGui() {","lastModifiedDate":"2023-09-06"},{"lineNumber":133,"author":{"gitId":"thaddeusong"},"content":" primaryStage.close();","lastModifiedDate":"2023-09-06"},{"lineNumber":134,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-09-06"},{"lineNumber":135,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-09-06"}],"authorContributionMap":{"thaddeusong":135}},{"path":"src/test/java/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" public void testDeadlineConstructor() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Deadline(\"a/by 2020-02-10 10:15\").toString(), \"[D][ ] a (by: 2020-02-10,10:15)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" public void testDeadlineToSaveFormat() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Deadline(\"a/by 2020-02-10 10:15\").toSaveFormat(), \"deadline:2020-02-10,10:15|a|false\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"thaddeusong":19}},{"path":"src/test/java/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package task;","lastModifiedDate":"2023-08-31"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Event;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-31"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-31"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"public class EventTest {","lastModifiedDate":"2023-08-31"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" public void testEventConstructor() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Event(\"a/from 2020-02-10 10:15/to 2020-02-10 10:20\").toString(), \"[E][ ] a (from: 2020-02-10,10:15 to: 2020-02-10,10:20)\");","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" public void testEventToSaveFormat() throws DukeException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Event(\"a/from 2020-02-10 10:15/to 2020-02-10 10:20\").toSaveFormat(), \"event:2020-02-10 10:15|2020-02-10 10:20|a|false\");","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-31"}],"authorContributionMap":{"thaddeusong":19}},{"path":"src/test/java/task/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"package task;","lastModifiedDate":"2023-08-30"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"import duke.exception.EmptyTaskDescException;","lastModifiedDate":"2023-09-05"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"import duke.task.Todo;","lastModifiedDate":"2023-09-05"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-30"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"public class TodoTest {","lastModifiedDate":"2023-08-30"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":" public void testTodoConstructor() throws EmptyTaskDescException {","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Todo(\"a\").toString(), \"[T][ ] a\");","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"thaddeusong"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"thaddeusong"},"content":" @Test","lastModifiedDate":"2023-08-30"},{"lineNumber":16,"author":{"gitId":"thaddeusong"},"content":" public void testTodoToSaveFormat() throws EmptyTaskDescException {","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" assertEquals(new Todo(\"a\").toSaveFormat(), \"todo:a|false\");","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"thaddeusong":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"thaddeusong"},"content":"hello","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"thaddeusong"},"content":"todo a","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"thaddeusong"},"content":"deadline b / by jun 1","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"thaddeusong"},"content":"event c / from jun 1 / to jun 2","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"thaddeusong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"thaddeusong"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"thaddeusong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"thaddeusong"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"thaddeusong"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"thaddeusong"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"list","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"thaddeusong":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":"thaddeusong"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Task\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"thaddeusong"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"thaddeusong"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\DukeException\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"java -classpath ..\\bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"thaddeusong":3,"-":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":"thaddeusong"},"content":"if ! (javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"thaddeusong"},"content":" javac -cp ..\\src\\main\\java\\Duke -Xlint:none -d ..\\bin ..\\src\\main\\java\\Duke\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"thaddeusong"},"content":" javac -cp ..\\src\\main\\java\\DukeException -Xlint:none -d ..\\bin ..\\src\\main\\java\\DukeException\\*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"thaddeusong"},"content":" javac -cp ..\\src\\main\\java\\Task -Xlint:none -d ..\\bin ..\\src\\main\\java\\Task\\*.java)","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"thaddeusong":4,"-":37}}] diff --git a/thaddeusong_ip_master/commits.json b/thaddeusong_ip_master/commits.json index 54167081..cce726b8 100644 --- a/thaddeusong_ip_master/commits.json +++ b/thaddeusong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"thaddeusong":[{"date":"2023-08-24","commitResults":[{"hash":"15766d22aa5e67d4900b242fa9661d8af25ee229","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"21966a7dba450a6c4383ab8aa7021794b0b5188e","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":11}}},{"hash":"b07c77b3fe54a1e946e88bc68bafb84e1729366a","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":9}}},{"hash":"db8bf4c7efacf2389623504014d554c9fe25e9bf","isMergeCommit":false,"messageTitle":"Level-3 and Level-4","messageBody":"","tags":["Level-4","Level-3","A-Inheritance","A-Enums","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":15}}},{"hash":"7b7c3acf21f11354e53aeae885e8f6612ad9cb7c","isMergeCommit":false,"messageTitle":"Add Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"bat":{"insertions":1,"deletions":0},"sh":{"insertions":2,"deletions":1}}},{"hash":"8db79d915ecdf1ccb5293572b8bfd8cc218966e0","isMergeCommit":false,"messageTitle":"Add Exceptions","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":51}}},{"hash":"30075b808547faf78041df5810d1280e54634921","isMergeCommit":false,"messageTitle":"Add Delete method","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":2}}}]},{"date":"2023-08-28","commitResults":[{"hash":"57495cea96fbe43d29ddb26c3bf1d22f400bcce0","isMergeCommit":false,"messageTitle":"Use More OOP","messageBody":"(cherry picked from commit 735bfbe59b74709b7cea91ab32e9e914a9c4c062)\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":61}}},{"hash":"04980d04f7a332d9fea5525043b773da5b4d4ae7","isMergeCommit":false,"messageTitle":"Add File Saving","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":166,"deletions":51},"bat":{"insertions":3,"deletions":2},"sh":{"insertions":4,"deletions":2}}}]},{"date":"2023-08-29","commitResults":[{"hash":"4f1c165992c67b962afd594af99ab13af76d7c0b","isMergeCommit":false,"messageTitle":"Reorganize Files","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":588,"deletions":373}}},{"hash":"6cce3d4add086b466ecb4a0319d45d16c226c2e2","isMergeCommit":false,"messageTitle":"Add Gradle Support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"bab945044e6f7fb70887998ff646ebe980b89d99","isMergeCommit":false,"messageTitle":"Add JUnit Tests to Deadline and Todo","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":4}}},{"hash":"dadeac06d02dfa3ec33d8ba39215c9d71da98114","isMergeCommit":false,"messageTitle":"Add File Saving","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":11}}},{"hash":"df68d43fb61d8867373aaa55711d8cdf9cd68cbf","isMergeCommit":false,"messageTitle":"Add LocalDateTime representation","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":34}}}]},{"date":"2023-08-31","commitResults":[{"hash":"b6f226b0e3c678c3e35d5683bc5584777ed446dc","isMergeCommit":false,"messageTitle":"Refactor Class Names","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":122}}},{"hash":"4bc795a6a854bb61a2d169b954c949ee652292c5","isMergeCommit":false,"messageTitle":"Refactor Class Names","messageBody":"(cherry picked from commit b6f226b0e3c678c3e35d5683bc5584777ed446dc)\n","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":122}}},{"hash":"2045c3cfd822ef9877bea3c41264951426d37a54","isMergeCommit":false,"messageTitle":"Fix Task Constructors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":54}}},{"hash":"f8cc6fb90b2f996f2e87c8fb888fcb7851739023","isMergeCommit":false,"messageTitle":"Fix Task Constructors","messageBody":"(cherry picked from commit 2045c3cfd822ef9877bea3c41264951426d37a54)\n","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":54}}},{"hash":"7c63fe58f2b56c25a4ca4f72694951e0a7d8dbc3","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":234,"deletions":11}}},{"hash":"f4323448f0d0fc764f15bcda60d9f4e7d1cc92d9","isMergeCommit":false,"messageTitle":"Add Unversioned Files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":2}}},{"hash":"8cfb1eb21ae3a290b51f71687c0bd6d11ecf3710","isMergeCommit":false,"messageTitle":"Add Unversioned Files","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":75}}},{"hash":"513657db88035ebc58e88d24b4c83707a4fa3b4b","isMergeCommit":false,"messageTitle":"Follow Coding Standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":115}}},{"hash":"efb34ea628e1f43957e3077cc68d17c686d1e69f","isMergeCommit":false,"messageTitle":"Add Find Command","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":20}}},{"hash":"01ab3d567aa9c8963ca63b2f894e52c2403ec2d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Duke/application/Application.java\n#\tsrc/main/java/Duke/command/Command.java\n#\tsrc/main/java/Duke/message/Message.java\n#\tsrc/main/java/Duke/task/Deadline.java\n","fileTypesAndContributionMap":{}},{"hash":"b804fd4367b08db752a64ec1ac76724572bfef84","isMergeCommit":false,"messageTitle":"Resolve Merge Conflicts","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":46}}},{"hash":"8e80c82bd699510e63a4d59fd151133705e30941","isMergeCommit":true,"messageTitle":"Resolve Merge Conflicts","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-05","commitResults":[{"hash":"e332828c1ae2ee2f5828c0d57373be65e63274b5","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":30,"deletions":24}}},{"hash":"77abd587c2aca5fd7c37a32599bf5563f1dc7d4c","isMergeCommit":false,"messageTitle":"Fix Style","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"32fcbcb9f6afd3bb4861e7bc74de1413a3107eb9","isMergeCommit":false,"messageTitle":"Fix Style","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":191,"deletions":145},"md":{"insertions":2,"deletions":2}}},{"hash":"7a9e7c2c4abe87da8a6dc11779ce401c9a8e38c9","isMergeCommit":true,"messageTitle":"Fix README Conflict","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-06","commitResults":[{"hash":"dcc2cbc3490d405f2e6e7a468d14c060b60f8703","isMergeCommit":false,"messageTitle":"Add JavaFX GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":1},"java":{"insertions":323,"deletions":192}}},{"hash":"1e8051b5e64a215a8cd89e6c196ddbaeb140a0fd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-12","commitResults":[{"hash":"b595e93795b658d055b5f5fc23976d0ac0a66dc4","isMergeCommit":false,"messageTitle":"Fix Image URL Sourcing","messageBody":"Sourcing the image from the URL rather than storing it as a local file makes it easier to change the image in the future.\n","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"863943af246a6acf373e9a2b1370407547f9e578","isMergeCommit":false,"messageTitle":"Add Assertions to TaskList","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"11855f22ca3c90d1d6ffb4c11cf713c7abe882cb","isMergeCommit":false,"messageTitle":"Remove magic literals from UI class","messageBody":"Added dimensions of various GUI elements as static\nfields, so that they can be sacled appropriately.\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":5}}},{"hash":"bc9c08d265f67f17331185b6cc279b589bec8071","isMergeCommit":true,"messageTitle":"Merge pull request #1 from thaddeusong/branch-A-CodeQuality","messageBody":"Remove magic literals from UI class","fileTypesAndContributionMap":{}}]},{"date":"2023-09-13","commitResults":[{"hash":"33f12b321c93b2b8aeadc5c7ba02fd572bba3e8f","isMergeCommit":false,"messageTitle":"Add Duplicate detection","messageBody":"Prevents tasks from being added if the name is identical to a previous task.\n","tags":["BCD-Extension","A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":3}}}]},{"date":"2023-09-15","commitResults":[{"hash":"da88c92d77e1e27dfaf50103a9bc12a34389b4cc","isMergeCommit":false,"messageTitle":"Make Error Messages Red","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":26}}},{"hash":"8e4f0dd9dc45c5965655bd02b3c8e0d3bb6cdba2","isMergeCommit":false,"messageTitle":"Make Error Messages Red","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"f62a624043a9a959639109c9e2498d3efc9804cf","isMergeCommit":false,"messageTitle":"Add Ui.png","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-25","commitResults":[{"hash":"be7f905023476d3506ea56a4405de2702709a425","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":131,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"thaddeusong":{"java":1415,"md":153,"fxml":0,"sh":4,"bat":3,"gradle":22,"txt":11}},"authorContributionVariance":{"thaddeusong":101989.38},"authorDisplayNameMap":{"thaddeusong":"CS2103T-F10-3 ONG ..DEUS"}} +{"authorDailyContributionsMap":{"thaddeusong":[{"date":"2023-08-24","commitResults":[{"hash":"15766d22aa5e67d4900b242fa9661d8af25ee229","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"21966a7dba450a6c4383ab8aa7021794b0b5188e","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":11}}},{"hash":"b07c77b3fe54a1e946e88bc68bafb84e1729366a","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":9}}},{"hash":"db8bf4c7efacf2389623504014d554c9fe25e9bf","isMergeCommit":false,"messageTitle":"Level-3 and Level-4","messageBody":"","tags":["Level-4","Level-3","A-Inheritance","A-Enums","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":15}}},{"hash":"7b7c3acf21f11354e53aeae885e8f6612ad9cb7c","isMergeCommit":false,"messageTitle":"Add Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"bat":{"insertions":1,"deletions":0},"sh":{"insertions":2,"deletions":1}}},{"hash":"8db79d915ecdf1ccb5293572b8bfd8cc218966e0","isMergeCommit":false,"messageTitle":"Add Exceptions","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":51}}},{"hash":"30075b808547faf78041df5810d1280e54634921","isMergeCommit":false,"messageTitle":"Add Delete method","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":2}}}]},{"date":"2023-08-28","commitResults":[{"hash":"57495cea96fbe43d29ddb26c3bf1d22f400bcce0","isMergeCommit":false,"messageTitle":"Use More OOP","messageBody":"(cherry picked from commit 735bfbe59b74709b7cea91ab32e9e914a9c4c062)\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":145,"deletions":61}}},{"hash":"04980d04f7a332d9fea5525043b773da5b4d4ae7","isMergeCommit":false,"messageTitle":"Add File Saving","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":166,"deletions":51},"bat":{"insertions":3,"deletions":2},"sh":{"insertions":4,"deletions":2}}}]},{"date":"2023-08-29","commitResults":[{"hash":"4f1c165992c67b962afd594af99ab13af76d7c0b","isMergeCommit":false,"messageTitle":"Reorganize Files","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":588,"deletions":373}}},{"hash":"6cce3d4add086b466ecb4a0319d45d16c226c2e2","isMergeCommit":false,"messageTitle":"Add Gradle Support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0}}}]},{"date":"2023-08-30","commitResults":[{"hash":"bab945044e6f7fb70887998ff646ebe980b89d99","isMergeCommit":false,"messageTitle":"Add JUnit Tests to Deadline and Todo","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":4}}},{"hash":"dadeac06d02dfa3ec33d8ba39215c9d71da98114","isMergeCommit":false,"messageTitle":"Add File Saving","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":11}}},{"hash":"df68d43fb61d8867373aaa55711d8cdf9cd68cbf","isMergeCommit":false,"messageTitle":"Add LocalDateTime representation","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":34}}}]},{"date":"2023-08-31","commitResults":[{"hash":"b6f226b0e3c678c3e35d5683bc5584777ed446dc","isMergeCommit":false,"messageTitle":"Refactor Class Names","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":122}}},{"hash":"4bc795a6a854bb61a2d169b954c949ee652292c5","isMergeCommit":false,"messageTitle":"Refactor Class Names","messageBody":"(cherry picked from commit b6f226b0e3c678c3e35d5683bc5584777ed446dc)\n","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":122}}},{"hash":"2045c3cfd822ef9877bea3c41264951426d37a54","isMergeCommit":false,"messageTitle":"Fix Task Constructors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":54}}},{"hash":"f8cc6fb90b2f996f2e87c8fb888fcb7851739023","isMergeCommit":false,"messageTitle":"Fix Task Constructors","messageBody":"(cherry picked from commit 2045c3cfd822ef9877bea3c41264951426d37a54)\n","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":54}}},{"hash":"7c63fe58f2b56c25a4ca4f72694951e0a7d8dbc3","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":234,"deletions":11}}},{"hash":"f4323448f0d0fc764f15bcda60d9f4e7d1cc92d9","isMergeCommit":false,"messageTitle":"Add Unversioned Files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":2}}},{"hash":"8cfb1eb21ae3a290b51f71687c0bd6d11ecf3710","isMergeCommit":false,"messageTitle":"Add Unversioned Files","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":75}}},{"hash":"513657db88035ebc58e88d24b4c83707a4fa3b4b","isMergeCommit":false,"messageTitle":"Follow Coding Standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":115}}},{"hash":"efb34ea628e1f43957e3077cc68d17c686d1e69f","isMergeCommit":false,"messageTitle":"Add Find Command","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":20}}},{"hash":"01ab3d567aa9c8963ca63b2f894e52c2403ec2d3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/Duke/application/Application.java\n#\tsrc/main/java/Duke/command/Command.java\n#\tsrc/main/java/Duke/message/Message.java\n#\tsrc/main/java/Duke/task/Deadline.java\n","fileTypesAndContributionMap":{}},{"hash":"b804fd4367b08db752a64ec1ac76724572bfef84","isMergeCommit":false,"messageTitle":"Resolve Merge Conflicts","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":46}}},{"hash":"8e80c82bd699510e63a4d59fd151133705e30941","isMergeCommit":true,"messageTitle":"Resolve Merge Conflicts","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-05","commitResults":[{"hash":"e332828c1ae2ee2f5828c0d57373be65e63274b5","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":30,"deletions":24}}},{"hash":"77abd587c2aca5fd7c37a32599bf5563f1dc7d4c","isMergeCommit":false,"messageTitle":"Fix Style","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"32fcbcb9f6afd3bb4861e7bc74de1413a3107eb9","isMergeCommit":false,"messageTitle":"Fix Style","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":191,"deletions":145},"md":{"insertions":2,"deletions":2}}},{"hash":"7a9e7c2c4abe87da8a6dc11779ce401c9a8e38c9","isMergeCommit":true,"messageTitle":"Fix README Conflict","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-06","commitResults":[{"hash":"dcc2cbc3490d405f2e6e7a468d14c060b60f8703","isMergeCommit":false,"messageTitle":"Add JavaFX GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":1},"java":{"insertions":323,"deletions":192}}},{"hash":"1e8051b5e64a215a8cd89e6c196ddbaeb140a0fd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-12","commitResults":[{"hash":"b595e93795b658d055b5f5fc23976d0ac0a66dc4","isMergeCommit":false,"messageTitle":"Fix Image URL Sourcing","messageBody":"Sourcing the image from the URL rather than storing it as a local file makes it easier to change the image in the future.\n","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"863943af246a6acf373e9a2b1370407547f9e578","isMergeCommit":false,"messageTitle":"Add Assertions to TaskList","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"11855f22ca3c90d1d6ffb4c11cf713c7abe882cb","isMergeCommit":false,"messageTitle":"Remove magic literals from UI class","messageBody":"Added dimensions of various GUI elements as static\nfields, so that they can be sacled appropriately.\n","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":5}}},{"hash":"bc9c08d265f67f17331185b6cc279b589bec8071","isMergeCommit":true,"messageTitle":"Merge pull request #1 from thaddeusong/branch-A-CodeQuality","messageBody":"Remove magic literals from UI class","fileTypesAndContributionMap":{}}]},{"date":"2023-09-13","commitResults":[{"hash":"33f12b321c93b2b8aeadc5c7ba02fd572bba3e8f","isMergeCommit":false,"messageTitle":"Add Duplicate detection","messageBody":"Prevents tasks from being added if the name is identical to a previous task.\n","tags":["BCD-Extension","A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":3}}}]},{"date":"2023-09-15","commitResults":[{"hash":"da88c92d77e1e27dfaf50103a9bc12a34389b4cc","isMergeCommit":false,"messageTitle":"Make Error Messages Red","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":26}}},{"hash":"8e4f0dd9dc45c5965655bd02b3c8e0d3bb6cdba2","isMergeCommit":false,"messageTitle":"Make Error Messages Red","messageBody":"","tags":["A-BetterGui"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"f62a624043a9a959639109c9e2498d3efc9804cf","isMergeCommit":false,"messageTitle":"Add Ui.png","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-25","commitResults":[{"hash":"be7f905023476d3506ea56a4405de2702709a425","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{"md":{"insertions":131,"deletions":12}}}]},{"date":"2023-09-26","commitResults":[{"hash":"70ff66a8a41a9e25a43c684e3e9c6f211b2ce51a","isMergeCommit":false,"messageTitle":"Put Ui.png in base folder","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"thaddeusong":{"java":1415,"md":153,"fxml":0,"sh":4,"bat":3,"gradle":22,"txt":13}},"authorContributionVariance":{"thaddeusong":99833.37},"authorDisplayNameMap":{"thaddeusong":"CS2103T-F10-3 ONG ..DEUS"}} diff --git a/yezkez10_ip_master/authorship.json b/yezkez10_ip_master/authorship.json index 4be8ed3f..7087b277 100644 --- a/yezkez10_ip_master/authorship.json +++ b/yezkez10_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"# ToDoIst User Guide 📃","lastModifiedDate":"2023-09-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"TodoIst is a desktop app for managing your tasks. ","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"_Keep track of your tasks using ToDoIst!_","lastModifiedDate":"2023-09-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"## Features","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"\u003e Notes:","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"\u003e * Words in \u003c \u003e are the parameters to be supplied by the user.","lastModifiedDate":"2023-09-18"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"\u003e * E.g. in todo \u003ctask\u003e, task is a parameter which can be used as todo eat","lastModifiedDate":"2023-09-18"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"\u003e * Commands are case-sensitive.","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"\u003e * e.g. todo quiz is acceptable, but TODO quiz and Todo quiz are unacceptable command formats.","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"\u003e * Some commands do not take in parameters (such as list, bye). As such, extraneous parameters for these commands are unsupported.","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"\u003e * e.g. list 123 is not an acceptable format.","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":"### Types of Tasks","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"1. **ToDos**: basic task with just a description","lastModifiedDate":"2023-09-18"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"1. **Deadlines**: tasks with a due date","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":"1. **Events**: task with a specific start and end time","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":"1. **Contact**: task with a person’s contact details","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":"## Usage","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"**Adding a ToDo** : ``todo \u003cdescription\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":"Adds a todo to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":"``todo call Nellie``","lastModifiedDate":"2023-09-18"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Todo to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":"T | 0 | call Nellie ","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":"**Adding an Event** : ``event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":"Adds an event to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"``event training /from Mon 6pm /to Mon 9pm``","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Event to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":"E | 0 | training | Mon 6pm to Mon 9pm ","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":"**Adding a Deadline** : ``deadline \u003cdescription\u003e /by \u003cdate\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":"Adds a deadline to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":"\u003e Note: It only supports \u003cdate\u003e inputs with the format YYYY-MM-DD (e.g. 2023-10-10).","lastModifiedDate":"2023-09-18"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":"``deadline return book /by 2023-10-10``","lastModifiedDate":"2023-09-18"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Deadline to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":"D | 0 | return book | Oct 10 2023","lastModifiedDate":"2023-09-18"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":"**Adding a Contact task** : ``contact \u003cname\u003e /@ \u003cmode of contact\u003e /for \u003creason\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":"Adds a task to contact an individual to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":"``contact Joy /@ foojnjoy@gmail.com /for follow-up checkup``","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Deadline to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":"C | 0 | Joy | foojnjoy@gmail.com | follow-up checkup","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":"**Listing all tasks** : ``list``","lastModifiedDate":"2023-09-18"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":90,"author":{"gitId":"yezkez10"},"content":"Shows a list of all tasks in the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":91,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":92,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":93,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":94,"author":{"gitId":"yezkez10"},"content":"``list``","lastModifiedDate":"2023-09-18"},{"lineNumber":95,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":96,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":97,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":99,"author":{"gitId":"yezkez10"},"content":"1. [T][] call Nellie","lastModifiedDate":"2023-09-18"},{"lineNumber":100,"author":{"gitId":"yezkez10"},"content":"2. [E][] training (from: Mon 6pm to: Mon 9pm)","lastModifiedDate":"2023-09-18"},{"lineNumber":101,"author":{"gitId":"yezkez10"},"content":"3. [D][] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":102,"author":{"gitId":"yezkez10"},"content":"4. [C][] Joy @ foojnjoy@gmail.com for follow-up checkup","lastModifiedDate":"2023-09-18"},{"lineNumber":103,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":104,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":105,"author":{"gitId":"yezkez10"},"content":"**Marking a task as done** : ``mark \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":106,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":107,"author":{"gitId":"yezkez10"},"content":"Marks the tasks at the specific index as ‘done’.","lastModifiedDate":"2023-09-18"},{"lineNumber":108,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":109,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Marking a \u0027done\u0027 task as \u0027done\u0027 is not allowed.","lastModifiedDate":"2023-09-18"},{"lineNumber":110,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":111,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":112,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":113,"author":{"gitId":"yezkez10"},"content":"``mark 3``","lastModifiedDate":"2023-09-18"},{"lineNumber":114,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":115,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":116,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":117,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":118,"author":{"gitId":"yezkez10"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-18"},{"lineNumber":119,"author":{"gitId":"yezkez10"},"content":"[D][X] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":120,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":121,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":122,"author":{"gitId":"yezkez10"},"content":"**Marking a task as undone** : ``unmark \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":123,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":124,"author":{"gitId":"yezkez10"},"content":"Marks the tasks at the specific index as ‘undone’.","lastModifiedDate":"2023-09-18"},{"lineNumber":125,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":126,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Marking an undone task as \u0027undone\u0027 is not allowed","lastModifiedDate":"2023-09-18"},{"lineNumber":127,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":128,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":129,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":130,"author":{"gitId":"yezkez10"},"content":"``unmark 3``","lastModifiedDate":"2023-09-18"},{"lineNumber":131,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":132,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":133,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":134,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":135,"author":{"gitId":"yezkez10"},"content":"Nice! I\u0027ve marked this task as undone:","lastModifiedDate":"2023-09-18"},{"lineNumber":136,"author":{"gitId":"yezkez10"},"content":"[D][] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":137,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":138,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":139,"author":{"gitId":"yezkez10"},"content":"**Deleting a task** : ``delete \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":140,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":141,"author":{"gitId":"yezkez10"},"content":"Deletes the tasks at the specified index.","lastModifiedDate":"2023-09-18"},{"lineNumber":142,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":143,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Deleting a task that doens\u0027t exist is not allowed. ","lastModifiedDate":"2023-09-18"},{"lineNumber":144,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":145,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":146,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":147,"author":{"gitId":"yezkez10"},"content":"``delete 1``","lastModifiedDate":"2023-09-18"},{"lineNumber":148,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":149,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":150,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":151,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":152,"author":{"gitId":"yezkez10"},"content":"Deleted the following task:","lastModifiedDate":"2023-09-18"},{"lineNumber":153,"author":{"gitId":"yezkez10"},"content":"[T][] call Nellie","lastModifiedDate":"2023-09-18"},{"lineNumber":154,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":155,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":156,"author":{"gitId":"yezkez10"},"content":"**Finding tasks by keyword** : ``find \u003ckeyword\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":157,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":158,"author":{"gitId":"yezkez10"},"content":"Finds tasks in the task list that match or contain the keyword.","lastModifiedDate":"2023-09-18"},{"lineNumber":159,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":160,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":161,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":162,"author":{"gitId":"yezkez10"},"content":"``find training``","lastModifiedDate":"2023-09-18"},{"lineNumber":163,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":164,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":165,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":166,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":167,"author":{"gitId":"yezkez10"},"content":"Here are the relevant tasks:","lastModifiedDate":"2023-09-18"},{"lineNumber":168,"author":{"gitId":"yezkez10"},"content":"1.[E][] training (from: Mon 6pm to: Mon 9pm)","lastModifiedDate":"2023-09-18"},{"lineNumber":169,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":170,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":171,"author":{"gitId":"yezkez10"},"content":"**Exiting the program**: ``bye``","lastModifiedDate":"2023-09-18"},{"lineNumber":172,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":173,"author":{"gitId":"yezkez10"},"content":"Exits the program.","lastModifiedDate":"2023-09-18"},{"lineNumber":174,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":175,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":176,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":177,"author":{"gitId":"yezkez10"},"content":"``bye``","lastModifiedDate":"2023-09-18"},{"lineNumber":178,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":179,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":180,"author":{"gitId":"yezkez10"},"content":" ","lastModifiedDate":"2023-09-18"},{"lineNumber":181,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":182,"author":{"gitId":"yezkez10"},"content":"Bye! CU again!","lastModifiedDate":"2023-09-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yezkez10":179,"-":4}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.0.13\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"javafx {","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" version \u003d \"17.0.7\"","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" modules \u003d [ \u0027javafx.controls\u0027, \u0027javafx.fxml\u0027 ]","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-09-06"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" mainClassName \u003d \"duke.Main\"","lastModifiedDate":"2023-09-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":"checkstyle {","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":" sourceSets \u003d [] //ignoring checkstyle for now~","lastModifiedDate":"2023-09-13"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":30,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"T | 0| todo hi","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":1}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"# ToDoIst User Guide","lastModifiedDate":"2023-09-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"TodoIst is a desktop app for managing your tasks. ","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"![Ui.png](Ui.png)","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"_Keep track of your tasks using ToDoIst!_","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"\u003e Notes:","lastModifiedDate":"2023-09-18"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"\u003e * Words in \u003c \u003e are the parameters to be supplied by the user.","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"\u003e * E.g. in todo \u003ctask\u003e, task is a parameter which can be used as todo eat","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"\u003e * Commands are case-sensitive.","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"\u003e * e.g. todo quiz is acceptable, but TODO quiz and Todo quiz are unacceptable command formats.","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"\u003e * Some commands do not take in parameters (such as list, bye). As such, extraneous parameters for these commands are unsupported.","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":"\u003e * e.g. list 123 is not an acceptable format.","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"### Types of Tasks","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":"1. **ToDos**: basic task with just a description","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":"1. **Deadlines**: tasks with a due date","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":"1. **Events**: task with a specific start and end time","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":"1. **Contact**: task with a person’s contact details","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":"**Adding a ToDo** : ``todo \u003cdescription\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":"Adds a todo to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":"``todo call Nellie``","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Todo to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":"T | 0 | call Nellie ","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":"**Adding an Event** : ``event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":"Adds an event to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":"``event training /from Mon 6pm /to Mon 9pm``","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Event to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":"E | 0 | training | Mon 6pm to Mon 9pm ","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":"**Adding a Deadline** : ``deadline \u003cdescription\u003e /by \u003cdate\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":"Adds a deadline to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":"\u003e Note: It only supports \u003cdate\u003e inputs with the format YYYY-MM-DD (e.g. 2023-10-10).","lastModifiedDate":"2023-09-18"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":"``deadline return book /by 2023-10-10``","lastModifiedDate":"2023-09-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Deadline to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":"D | 0 | return book | Oct 10 2023","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":"**Adding a Contact task** : ``contact \u003cname\u003e /@ \u003cmode of contact\u003e /for \u003creason\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":"Adds a task to contact an individual to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":"``contact Joy /@ foojnjoy@gmail.com /for follow-up checkup``","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Deadline to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":"C | 0 | Joy | foojnjoy@gmail.com | follow-up checkup","lastModifiedDate":"2023-09-18"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":90,"author":{"gitId":"yezkez10"},"content":"**Listing all tasks** : ``list``","lastModifiedDate":"2023-09-18"},{"lineNumber":91,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":92,"author":{"gitId":"yezkez10"},"content":"Shows a list of all tasks in the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":96,"author":{"gitId":"yezkez10"},"content":"``list``","lastModifiedDate":"2023-09-18"},{"lineNumber":97,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":99,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":100,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":101,"author":{"gitId":"yezkez10"},"content":"1. [T][] call Nellie","lastModifiedDate":"2023-09-18"},{"lineNumber":102,"author":{"gitId":"yezkez10"},"content":"2. [E][] training (from: Mon 6pm to: Mon 9pm)","lastModifiedDate":"2023-09-18"},{"lineNumber":103,"author":{"gitId":"yezkez10"},"content":"3. [D][] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":104,"author":{"gitId":"yezkez10"},"content":"4. [C][] Joy @ foojnjoy@gmail.com for follow-up checkup","lastModifiedDate":"2023-09-18"},{"lineNumber":105,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":106,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":107,"author":{"gitId":"yezkez10"},"content":"**Marking a task as done** : ``mark \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":108,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":109,"author":{"gitId":"yezkez10"},"content":"Marks the tasks at the specific index as ‘done’.","lastModifiedDate":"2023-09-18"},{"lineNumber":110,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":111,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Marking a \u0027done\u0027 task as \u0027done\u0027 is not allowed.","lastModifiedDate":"2023-09-18"},{"lineNumber":112,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":113,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":114,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":115,"author":{"gitId":"yezkez10"},"content":"``mark 3``","lastModifiedDate":"2023-09-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":119,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":120,"author":{"gitId":"yezkez10"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-18"},{"lineNumber":121,"author":{"gitId":"yezkez10"},"content":"[D][X] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":122,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":123,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":124,"author":{"gitId":"yezkez10"},"content":"**Marking a task as undone** : ``unmark \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":125,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":126,"author":{"gitId":"yezkez10"},"content":"Marks the tasks at the specific index as ‘undone’.","lastModifiedDate":"2023-09-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":128,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Marking an undone task as \u0027undone\u0027 is not allowed","lastModifiedDate":"2023-09-18"},{"lineNumber":129,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":130,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":131,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":132,"author":{"gitId":"yezkez10"},"content":"``unmark 3``","lastModifiedDate":"2023-09-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":136,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":137,"author":{"gitId":"yezkez10"},"content":"Nice! I\u0027ve marked this task as undone:","lastModifiedDate":"2023-09-18"},{"lineNumber":138,"author":{"gitId":"yezkez10"},"content":"[D][] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":140,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":141,"author":{"gitId":"yezkez10"},"content":"**Deleting a task** : ``delete \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":142,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":143,"author":{"gitId":"yezkez10"},"content":"Deletes the tasks at the specified index.","lastModifiedDate":"2023-09-18"},{"lineNumber":144,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":145,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Deleting a task that doens\u0027t exist is not allowed. ","lastModifiedDate":"2023-09-18"},{"lineNumber":146,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":147,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":148,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":149,"author":{"gitId":"yezkez10"},"content":"``delete 1``","lastModifiedDate":"2023-09-18"},{"lineNumber":150,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":151,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":152,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":153,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":154,"author":{"gitId":"yezkez10"},"content":"Deleted the following task:","lastModifiedDate":"2023-09-18"},{"lineNumber":155,"author":{"gitId":"yezkez10"},"content":"[T][] call Nellie","lastModifiedDate":"2023-09-18"},{"lineNumber":156,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":157,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":158,"author":{"gitId":"yezkez10"},"content":"**Finding tasks by keyword** : ``find \u003ckeyword\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":159,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":160,"author":{"gitId":"yezkez10"},"content":"Finds tasks in the task list that match or contain the keyword.","lastModifiedDate":"2023-09-18"},{"lineNumber":161,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":162,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":163,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":164,"author":{"gitId":"yezkez10"},"content":"``find training``","lastModifiedDate":"2023-09-18"},{"lineNumber":165,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":166,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":167,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":168,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":169,"author":{"gitId":"yezkez10"},"content":"Here are the relevant tasks:","lastModifiedDate":"2023-09-18"},{"lineNumber":170,"author":{"gitId":"yezkez10"},"content":"1.[E][] training (from: Mon 6pm to: Mon 9pm)","lastModifiedDate":"2023-09-18"},{"lineNumber":171,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":172,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":173,"author":{"gitId":"yezkez10"},"content":"**Exiting the program**: ``bye``","lastModifiedDate":"2023-09-18"},{"lineNumber":174,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":175,"author":{"gitId":"yezkez10"},"content":"Exits the program.","lastModifiedDate":"2023-09-18"},{"lineNumber":176,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":177,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":178,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":179,"author":{"gitId":"yezkez10"},"content":"``bye``","lastModifiedDate":"2023-09-18"},{"lineNumber":180,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":181,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2021-07-17"},{"lineNumber":183,"author":{"gitId":"-"},"content":"``` ","lastModifiedDate":"2021-07-17"},{"lineNumber":184,"author":{"gitId":"yezkez10"},"content":"Bye! CU again!","lastModifiedDate":"2023-09-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"yezkez10":157,"-":28}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.tools.KeywordEnum;","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import duke.tools.Ui;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import duke.tools.Storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import duke.tools.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" private Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" private Ui ui;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" public Duke() {","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" this.storage.read();","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" this.ui.printIntro();","lastModifiedDate":"2023-09-15"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" ArrayList\u003cTask\u003e tasks \u003d this.storage.getTaskList();","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" this.taskList \u003d new TaskList(tasks);","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" String output \u003d this.handleInput(input);","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" public String handleInput(String task) {","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" KeywordEnum keywordEnum \u003d KeywordEnum.assign(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" switch(keywordEnum) {","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" case LIST:","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" return this.taskList.printList();","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" case BYE:","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" this.storage.saveTasks(this.taskList.getTaskArray());","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" return this.ui.printOutro();","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" case TODO:","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" return this.taskList.handleTodo(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" return this.taskList.handleDeadline(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" case EVENT:","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" return this.taskList.handleEvent(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" case CONTACT:","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":" return this.taskList.handleContact(task);","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" case DELETE:","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" return this.taskList.delete(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" case MARK:","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" case UNMARK:","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" return this.taskList.mark(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":" return \"There aren\u0027t that many tasks. Please enter a valid index.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException dukeException) {","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":" return dukeException.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" case FIND:","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":" return this.taskList.find(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":" case INVALID:","lastModifiedDate":"2023-09-14"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":" String invalidCaseOutput \u003d \"This is not a valid task.\";","lastModifiedDate":"2023-09-14"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":" return invalidCaseOutput;","lastModifiedDate":"2023-09-14"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":" default:","lastModifiedDate":"2023-09-13"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":" String defaultOutput \u003d null;","lastModifiedDate":"2023-09-14"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":" return defaultOutput;","lastModifiedDate":"2023-09-14"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yezkez10":78,"-":3}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke;","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.gui.MainWindow;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" public Main() {","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" @Override","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" stage.show();","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":32}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"yezkez10":7}},{"path":"src/main/java/duke/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.gui;","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"/**","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" private Label dialog;","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" private void flip() {","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-13"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" db.flip();","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" return db;","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":61}},{"path":"src/main/java/duke/gui/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.gui;","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.Main;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"public class Launcher {","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":13}},{"path":"src/main/java/duke/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.gui;","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.tools.Ui;","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"/**","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" * Controller for duke.gui.MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" private Duke duke;","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"../../../resources/images/DaUser.png\"));","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"../../../resources/images/DaDuke.png\"));","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" public void initialize() {","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" Label welcomeMessage \u003d new Label(Ui.printIntro());","lastModifiedDate":"2023-09-15"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-15"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" DialogBox.getDukeDialog(welcomeMessage.getText(), dukeImage));","lastModifiedDate":"2023-09-15"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" );","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" userInput.clear();","lastModifiedDate":"2023-09-13"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" Label byeMessage \u003d new Label(Ui.printOutro());","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" dialogContainer.getChildren().add(byeMessage);","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":" PauseTransition pause \u003d new PauseTransition(Duration.seconds(5));","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":" pause.setOnFinished(event -\u003e {","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":" javafx.application.Platform.exit();","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":" });","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" pause.play();","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":69}},{"path":"src/main/java/duke/tasks/Contact.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-18"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"public class Contact extends Task {","lastModifiedDate":"2023-09-18"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" private final String[] descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" public Contact(String[] descriptionArray) {","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" super(descriptionArray[0]);","lastModifiedDate":"2023-09-18"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" this.descriptionArray \u003d descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" * Checks if the input is valid.","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" public void checkValidity() throws DukeException {","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" if (descriptionArray.length \u003c 3) {","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You are missing some contact details\");","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" * Reformats events to be ready to be written into tasks.txt.","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" * Should print in this format:","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" * C | 1 | contact \u003cname\u003e | \u003cnumber\u003e | \u003creason\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" * @return the reformatted event.","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" public String writtenFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" String[] task \u003d descriptionArray[0].split(\"contact \");","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" String contactName \u003d task[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" String contactNumber \u003d descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" String contactReason \u003d descriptionArray[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" return \"C | \" + super.status() + \" | \" + contactName + \" | \" + contactNumber + \" | \" + contactReason;","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" public String toString() {","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" String contactNumber \u003d \"@ \" + descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" String contactReason \u003d \"for \" + descriptionArray[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" return \"[C]\" + super.toString() + \" \" + contactNumber + \" \" + contactReason;","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-18"}],"authorContributionMap":{"yezkez10":44}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import java.time.DayOfWeek;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" private final String[] descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" public Deadline(String[] descriptionArray) {","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" super(descriptionArray[0]);","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" this.descriptionArray \u003d descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" * Checks that task contains deadline and that deadline is in specified format.","lastModifiedDate":"2023-09-14"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" * Goes on to reformat date.","lastModifiedDate":"2023-09-14"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" * @return reformatted deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-14"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" public void checkValidity() throws DukeException {","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" assert descriptionArray !\u003d null : \"Missing deadline task!\";","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" if (descriptionArray.length \u003c 2) {","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You are missing details of the the deadline!\");","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" String date \u003d descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" LocalDate.parse(date);","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Make sure you\u0027ve either inputted a valid day or in yyyy-mm-dd format (e.g. 2019-10-15)\");","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" * Reformats date into specified format","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" * @return the date in format yyyy-mm-dd","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" public String reformattedDate() throws DukeException {","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" String date \u003d descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" LocalDate deadline \u003d LocalDate.parse(date);","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" res \u003d deadline.format(formatter);","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Make sure you\u0027ve either inputted a valid day or in yyyy-mm-dd format (e.g. 2019-10-15)\");","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" * Reformats deadlines to be ready to be written into tasks.txt.","lastModifiedDate":"2023-09-14"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" * @return the reformatted deadline.","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":" public String writtenFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-14"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":" String eventType \u003d \"deadline\";","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" String eventDescription \u003d descriptionArray[0].substring(eventType.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" res \u003d \"D | \" + super.status() + \" | \" + eventDescription + \" | \" + reformattedDate();","lastModifiedDate":"2023-09-18"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":" * Converts task to string.","lastModifiedDate":"2023-09-14"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":" * @return formatted String version of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-14"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":" res \u003d \"[D]\" + super.toString() + \" (by: \" + reformattedDate() + \")\";","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-14"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"yezkez10":89}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" private final String[] descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" public Event(String[] descriptionArray) {","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" super(descriptionArray[0]);","lastModifiedDate":"2023-09-18"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" this.descriptionArray \u003d descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" * Checks if the input is valid.","lastModifiedDate":"2023-09-14"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" public void checkValidity() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" if (descriptionArray.length \u003c 3) {","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You are missing event details!\");","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" * Formats start and end time of event.","lastModifiedDate":"2023-09-14"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" * @param descriptionArray the task description in an array.","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" * @return reformatted String version of task.","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" public String reformatDetails(String[] descriptionArray) {","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" assert descriptionArray[1] !\u003d null : \"Start time cannot be null\";","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" assert descriptionArray[2] !\u003d null : \"End time cannot be null\";","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" String start \u003d descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" String end \u003d descriptionArray[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" return \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":"// public String breakdown(String descr) {","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":"// String[] descrArr \u003d descr.split(\"/\");","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":"// String start \u003d descrArr[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":"// String[] parts \u003d start.split(\" \");","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":"// String from \u003d parts[0];","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"// String restOfFrom \u003d start.substring(from.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":"// assert restOfFrom.length() \u003e 0 : \"Invalid start time\";","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":"// String end \u003d descrArr[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":"// String[] parts2 \u003d end.split(\" \");","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":"// String to \u003d parts2[0];","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":"// String restOfTo \u003d end.substring(to.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"// assert restOfTo.length() \u003e 0 : \"Invalid end time\";","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":"// return \" (from: \" + restOfFrom + \" to: \" + restOfTo + \")\";","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":"// }","lastModifiedDate":"2023-09-18"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" * Reformats events to be ready to be written into tasks.txt","lastModifiedDate":"2023-09-18"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" * @return the reformatted event,","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" * in the format E | 0 | birthday | mon 3pm | mon 5pm","lastModifiedDate":"2023-09-18"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":"// public String writtenFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":"// String[] descrArr \u003d descr.split(\"/\"); //you get 0: taskName, 1: start, 2: end","lastModifiedDate":"2023-09-18"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":"// String start \u003d descrArr[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":"// String[] parts \u003d start.split(\" \");","lastModifiedDate":"2023-09-18"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":"// String from \u003d parts[0];","lastModifiedDate":"2023-09-18"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":"// String restOfFrom \u003d start.substring(from.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":"// String end \u003d descrArr[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":"// String[] parts2 \u003d end.split(\" \");","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"// String to \u003d parts2[0];","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":"// String restOfTo \u003d end.substring(to.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":"// String eventType \u003d \"event\";","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":"// String eventDescription \u003d descrArr[0].substring(eventType.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":"// return \"E | \" + super.status() + \" | \" + eventDescription + \" | \" + restOfFrom + \" to \" + restOfTo;","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":"// }","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":" public String writtenFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":" String eventType \u003d \"event\";","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":" String eventDescription \u003d descriptionArray[0].substring(eventType.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":" String start \u003d descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":" String end \u003d descriptionArray[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":" return \"E | \" + super.status() + \" | \" + eventDescription + \" | \" + start + \" to \" + end;","lastModifiedDate":"2023-09-18"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"yezkez10"},"content":" * Converts task to string.","lastModifiedDate":"2023-09-14"},{"lineNumber":92,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"yezkez10"},"content":" * @return formatted String version of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"yezkez10"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"yezkez10"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"yezkez10"},"content":" return \"[E]\" + super.toString() + reformatDetails(this.descriptionArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"yezkez10":99}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" private final String descr;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" public Task(String descr) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" this.descr \u003d descr;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" public void markDone() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" assert !isDone : \"Can\u0027t do a \u0027done\u0027 task!\";","lastModifiedDate":"2023-09-14"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"This task is already marked done!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" public void markUndone() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" assert isDone : \"Can\u0027t mark an undone task as \u0027done\u0027\";","lastModifiedDate":"2023-09-14"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" if (!isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"This task is already marked undone!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" public String status() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" return (isDone ? \"1\" : \"0\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" public String marking() {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" * Converts task to string.","lastModifiedDate":"2023-09-14"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" * @return formatted String version of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" assert this.descr.split(\" \").length \u003e 1 : \"Invalid task description\";","lastModifiedDate":"2023-09-14"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" String keyword \u003d this.descr.split(\" \")[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" String taskDescription \u003d this.descr.substring(keyword.length()).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" return \"[\" + marking() + \"] \" + taskDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"yezkez10":52}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" private final String descr;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" public ToDo(String descr) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" super(descr);","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" this.descr \u003d descr;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" * Checks that the task is a valid ToDo with a task description.","lastModifiedDate":"2023-09-14"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-14"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" public void checkValidity() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" String[] descrArr \u003d descr.split(\" \");","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" assert descrArr.length \u003e 2 : \"Missing todo details\";","lastModifiedDate":"2023-09-14"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" if (descrArr.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You are missing todo details\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" * Reformats todos to be ready to be written into tasks.txt.","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" * @return the reformatted todo.","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" public String writtenFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" String[] descrArr \u003d descr.split(\"todo \");","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" return \"T | \" + super.status() + \" | \" + descrArr[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" * Converts task to string.","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" * @return formatted String version of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"yezkez10":44}},{"path":"src/main/java/duke/tools/KeywordEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tools;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"public enum KeywordEnum {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":" LIST, BYE, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID, FIND, CONTACT;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" public static KeywordEnum assign(String task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" if (task.startsWith(\"list\")) return KeywordEnum.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"bye\")) return KeywordEnum.BYE;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"mark\")) return KeywordEnum.MARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"unmark\")) return KeywordEnum.UNMARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"todo\")) return KeywordEnum.TODO;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"deadline\")) return KeywordEnum.DEADLINE;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"event\")) return KeywordEnum.EVENT;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"delete\")) return KeywordEnum.DELETE;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"find\")) return KeywordEnum.FIND;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"contact\")) return KeywordEnum.CONTACT;","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" else return KeywordEnum.INVALID;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yezkez10":19}},{"path":"src/main/java/duke/tools/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tools;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" * Parses the text in the .txt document.","lastModifiedDate":"2023-09-18"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" * It splits the text by \"|\",","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" * giving the task type, status, description and date/ time","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" * @param task The formatted String task","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" * @return the array of Strings","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" public String[] parseTask(String task) {","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task.split(\"\\\\|\");","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" return parts;","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" * Parses the Contact task.","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" * It splits the text by /@ and /for.","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" * @param task The input task","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" * @return String array containing task description, mode of contact and reason for contacting.","lastModifiedDate":"2023-09-18"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" public String[] parseContact(String task) {","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" assert task !\u003d null : \"The task to contact someone to be parsed cannot be null\";","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task. split(\" /@ | /for \");","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" return parts;","lastModifiedDate":"2023-09-18"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" * Parses the Deadline task.","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" * It splits the text by /by.","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" * @param task The input task","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" * @return String array containing task description and deadline.","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" public String[] parseDeadline(String task) {","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" assert task !\u003d null : \"The Deadline to be parsed cannot be null\";","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task. split(\" /by \");","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" return parts;","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" * Parses the Event task.","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" * It splits the text by /from and /to.","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" * @param task The input task","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" * @return String array containing task description, start and end time.","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":" public String[] parseEvent(String task) {","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" assert task !\u003d null : \"The Event to be parsed cannot be null\";","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task. split(\" /from | /to \");","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" return parts;","lastModifiedDate":"2023-09-18"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":57}},{"path":"src/main/java/duke/tools/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tools;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.*;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import java.io.File;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" private File savedFile;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" private final String filePath \u003d \"data/tasks.txt\";","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" return taskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" * Writes tasks from ArrayList data structure into .txt file.","lastModifiedDate":"2023-09-14"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" * @param taskList the data structure that contains task objects","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" public void saveTasks(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" String res \u003d null;","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" if (task instanceof ToDo) {","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" res \u003d ((ToDo) task).writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" res \u003d ((Deadline) task).writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" res \u003d ((Event) task).writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" FileWriter writer \u003d new FileWriter(filePath);","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" writer.write(res);","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" System.out.println((\"Nothing in task list to write to tasks.txt\"));","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":" * Reads tasks from .txt file to ArrayList data structure.","lastModifiedDate":"2023-09-14"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" public void read() {","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" this.savedFile \u003d new File(filePath);","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" Scanner sc \u003d new Scanner(savedFile);","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" String task \u003d sc.nextLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" String[] taskArr \u003d this.parser.parseTask(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" String type \u003d taskArr[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" String status \u003d taskArr[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":" String description \u003d taskArr[2];","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":" Task newTask;","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":" switch (type) {","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":" case \"T\":","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" newTask \u003d new ToDo(description);","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":" case \"D\":","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":" String[] deadlineArray \u003d new String[] {description, taskArr[3]};","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":" newTask \u003d new Deadline(deadlineArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":" case \"E\":","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":" String[] eventArray \u003d new String[] {description, taskArr[3], taskArr[4]};","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":" newTask \u003d new Event(eventArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":" break;","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":" case \"C\":","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":" String[] contactArray \u003d new String[] {description, taskArr[3], taskArr[4]};","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":" newTask \u003d new Contact(contactArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":" default:","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You have no tasks yet today!\");","lastModifiedDate":"2023-09-13"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":" if (status.equals(\"1\")) {","lastModifiedDate":"2023-09-15"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":" newTask.markDone();","lastModifiedDate":"2023-09-15"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-09-15"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":" System.out.println(\"No such file\");","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"yezkez10"},"content":" if (savedFile.createNewFile()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"yezkez10"},"content":" System.out.println(\"File created: \" + savedFile.getAbsolutePath());","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"yezkez10"},"content":" } catch (IOException exc) {","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"yezkez10"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2023-09-15"},{"lineNumber":96,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"yezkez10"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":101}},{"path":"src/main/java/duke/tools/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tools;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Contact;","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" private static ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" * Method to return the taskList.","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" * @return taskList the task list.","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" public ArrayList\u003cTask\u003e getTaskArray() {","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" return taskList;","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" * Handles TODOs.","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" * @param descr the task description","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" * @return the String that is printed when a ToDo is created.","lastModifiedDate":"2023-09-14"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" public String handleTodo(String descr) {","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-15"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" ToDo newTodo \u003d new ToDo(descr);","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" newTodo.checkValidity();","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" taskList.add(newTodo);","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Okie! I\u0027ve added this ToDo to your task list!\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" res +\u003d newTodo.writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" res +\u003d \"Now you\u0027ve got \" + taskList.size() + \" tasks in your list.\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" * Handles Events.","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" * @param descr the task description","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" * @return the String that is printed when a new Event is added.","lastModifiedDate":"2023-09-14"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" public String handleEvent(String descr) {","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" String res \u003d null;","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" String[] descriptionArray \u003d this.parser.parseEvent(descr);","lastModifiedDate":"2023-09-18"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":" Event newEvent \u003d new Event(descriptionArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":" newEvent.checkValidity();","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":" taskList.add(newEvent);","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Okie! I\u0027ve added this Event to your task list!\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" res +\u003d newEvent.writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" res +\u003d \"Now you\u0027ve got \" + taskList.size() + \" tasks in your list.\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":" * Handles Deadlines.","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":" * @param descr the task description","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":" * @return the String that is printed when a new Deadline is added.","lastModifiedDate":"2023-09-14"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":" public String handleDeadline(String descr) {","lastModifiedDate":"2023-09-13"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-13"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":" String[] descriptionArray \u003d this.parser.parseDeadline(descr);","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":" Deadline newDeadline \u003d new Deadline(descriptionArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":" newDeadline.checkValidity();","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Okie! I\u0027ve added this Deadline to your task list!\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":" res +\u003d newDeadline.writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":" res +\u003d \"Now you\u0027ve got \" + taskList.size() + \" tasks in your list.\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":90,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":92,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":94,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":97,"author":{"gitId":"yezkez10"},"content":" * Handles Contact tasks.","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":99,"author":{"gitId":"yezkez10"},"content":" * @param descr the task description","lastModifiedDate":"2023-09-18"},{"lineNumber":100,"author":{"gitId":"yezkez10"},"content":" * @return the String that is printed when a new Contact task is added.","lastModifiedDate":"2023-09-18"},{"lineNumber":101,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":102,"author":{"gitId":"yezkez10"},"content":" public String handleContact(String descr) {","lastModifiedDate":"2023-09-18"},{"lineNumber":103,"author":{"gitId":"yezkez10"},"content":" String output;","lastModifiedDate":"2023-09-18"},{"lineNumber":104,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":105,"author":{"gitId":"yezkez10"},"content":" String[] task \u003d this.parser.parseContact(descr);","lastModifiedDate":"2023-09-18"},{"lineNumber":106,"author":{"gitId":"yezkez10"},"content":" Contact newContactTask \u003d new Contact(task);","lastModifiedDate":"2023-09-18"},{"lineNumber":107,"author":{"gitId":"yezkez10"},"content":" newContactTask.checkValidity();","lastModifiedDate":"2023-09-18"},{"lineNumber":108,"author":{"gitId":"yezkez10"},"content":" taskList.add(newContactTask);","lastModifiedDate":"2023-09-18"},{"lineNumber":109,"author":{"gitId":"yezkez10"},"content":" output \u003d \"Okie! I\u0027ve added this Contact task to your task list!\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":110,"author":{"gitId":"yezkez10"},"content":" output +\u003d newContactTask.writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":111,"author":{"gitId":"yezkez10"},"content":" output +\u003d \"Now you\u0027ve got \" + taskList.size() + \" tasks in your list.\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":112,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-18"},{"lineNumber":113,"author":{"gitId":"yezkez10"},"content":" output \u003d e.getMessage();","lastModifiedDate":"2023-09-18"},{"lineNumber":114,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":115,"author":{"gitId":"yezkez10"},"content":" return output;","lastModifiedDate":"2023-09-18"},{"lineNumber":116,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":117,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":118,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"yezkez10"},"content":" * Marks or unnmarks task.","lastModifiedDate":"2023-09-18"},{"lineNumber":120,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"yezkez10"},"content":" * @param task the task being marked","lastModifiedDate":"2023-09-02"},{"lineNumber":122,"author":{"gitId":"yezkez10"},"content":" * @return the String that is printed when a task is marked.","lastModifiedDate":"2023-09-14"},{"lineNumber":123,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-02"},{"lineNumber":124,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"yezkez10"},"content":" public String mark(String task) throws DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":126,"author":{"gitId":"yezkez10"},"content":" String res \u003d null;","lastModifiedDate":"2023-09-13"},{"lineNumber":127,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task.split(\" \");","lastModifiedDate":"2023-09-02"},{"lineNumber":128,"author":{"gitId":"yezkez10"},"content":" assert parts.length \u003e 2 : \"Missing indication of which task to mark as \u0027done\u0027\";","lastModifiedDate":"2023-09-14"},{"lineNumber":129,"author":{"gitId":"yezkez10"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Which task do you want to mark as done?\");","lastModifiedDate":"2023-09-02"},{"lineNumber":131,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":133,"author":{"gitId":"yezkez10"},"content":" String index \u003d parts[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"yezkez10"},"content":" int taskIndex \u003d 0;","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"yezkez10"},"content":" taskIndex \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"yezkez10"},"content":" boolean indexIsValid \u003d taskIndex \u003c taskList.size() || taskIndex \u003e 0;","lastModifiedDate":"2023-09-14"},{"lineNumber":138,"author":{"gitId":"yezkez10"},"content":" assert indexIsValid : \"Invalid index\";","lastModifiedDate":"2023-09-14"},{"lineNumber":139,"author":{"gitId":"yezkez10"},"content":" if (!indexIsValid) {","lastModifiedDate":"2023-09-14"},{"lineNumber":140,"author":{"gitId":"yezkez10"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2023-09-15"},{"lineNumber":141,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":142,"author":{"gitId":"yezkez10"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":143,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Please enter a valid index.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":144,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":145,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":146,"author":{"gitId":"yezkez10"},"content":" Task taskChanged \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-09-02"},{"lineNumber":147,"author":{"gitId":"yezkez10"},"content":" String action \u003d parts[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":148,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":149,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":150,"author":{"gitId":"yezkez10"},"content":" if (action.equals(\"mark\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":151,"author":{"gitId":"yezkez10"},"content":" taskChanged.markDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":152,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Nice! I\u0027ve marked this task as done:\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":153,"author":{"gitId":"yezkez10"},"content":" } else if (action.equals(\"unmark\")) {","lastModifiedDate":"2023-09-13"},{"lineNumber":154,"author":{"gitId":"yezkez10"},"content":" taskChanged.markUndone();","lastModifiedDate":"2023-09-02"},{"lineNumber":155,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Nice! I\u0027ve marked this task as undone:\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":156,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":157,"author":{"gitId":"yezkez10"},"content":" res +\u003d taskChanged.toString() + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":158,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":159,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":160,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":161,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":162,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":163,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":164,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":165,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":166,"author":{"gitId":"yezkez10"},"content":" * Deletes task from taskList.","lastModifiedDate":"2023-09-14"},{"lineNumber":167,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":168,"author":{"gitId":"yezkez10"},"content":" * @param task The instructions containing index of task to be deleted.","lastModifiedDate":"2023-09-02"},{"lineNumber":169,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-02"},{"lineNumber":170,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":171,"author":{"gitId":"yezkez10"},"content":" public String delete(String task) throws DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":172,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-13"},{"lineNumber":173,"author":{"gitId":"yezkez10"},"content":" String[] segments \u003d task.split(\" \");","lastModifiedDate":"2023-09-02"},{"lineNumber":174,"author":{"gitId":"yezkez10"},"content":" if (segments.length \u003c 2) {","lastModifiedDate":"2023-09-02"},{"lineNumber":175,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Which task do you want to delete?\");","lastModifiedDate":"2023-09-02"},{"lineNumber":176,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":177,"author":{"gitId":"yezkez10"},"content":" String index \u003d segments[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":178,"author":{"gitId":"yezkez10"},"content":" int taskIndex;","lastModifiedDate":"2023-09-02"},{"lineNumber":179,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":180,"author":{"gitId":"yezkez10"},"content":" taskIndex \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-09-02"},{"lineNumber":181,"author":{"gitId":"yezkez10"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":182,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Please enter a valid index.\"); //e.g. delete hi","lastModifiedDate":"2023-09-02"},{"lineNumber":183,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":184,"author":{"gitId":"yezkez10"},"content":" boolean indexIsValid \u003d taskIndex \u003c taskList.size() || taskIndex \u003e 0;","lastModifiedDate":"2023-09-14"},{"lineNumber":185,"author":{"gitId":"yezkez10"},"content":" assert indexIsValid : \"Index is invalid\";","lastModifiedDate":"2023-09-14"},{"lineNumber":186,"author":{"gitId":"yezkez10"},"content":" if (!indexIsValid) {","lastModifiedDate":"2023-09-14"},{"lineNumber":187,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Please enter a valid index.\");","lastModifiedDate":"2023-09-02"},{"lineNumber":188,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":189,"author":{"gitId":"yezkez10"},"content":" Task deletedTask \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-09-14"},{"lineNumber":190,"author":{"gitId":"yezkez10"},"content":" taskList.remove(deletedTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":191,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":192,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Deleted the following task: \\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":193,"author":{"gitId":"yezkez10"},"content":" res +\u003d deletedTask.toString() + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":194,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":195,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":196,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":197,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":198,"author":{"gitId":"yezkez10"},"content":" * Finds relevant tasks.","lastModifiedDate":"2023-09-14"},{"lineNumber":199,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":200,"author":{"gitId":"yezkez10"},"content":" * @param task the input that specifies what to find.","lastModifiedDate":"2023-09-02"},{"lineNumber":201,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if the input is invalid.","lastModifiedDate":"2023-09-02"},{"lineNumber":202,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":203,"author":{"gitId":"yezkez10"},"content":" public String find(String task) throws DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":204,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task.split(\"find \");","lastModifiedDate":"2023-09-02"},{"lineNumber":205,"author":{"gitId":"yezkez10"},"content":" if (parts.length \u003c 1) {","lastModifiedDate":"2023-09-02"},{"lineNumber":206,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"What do you want to find?\");","lastModifiedDate":"2023-09-02"},{"lineNumber":207,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":208,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":209,"author":{"gitId":"yezkez10"},"content":" String relevantWord \u003d parts[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":210,"author":{"gitId":"yezkez10"},"content":" ArrayList\u003cTask\u003e resultList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-13"},{"lineNumber":211,"author":{"gitId":"yezkez10"},"content":" String output;","lastModifiedDate":"2023-09-13"},{"lineNumber":212,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":213,"author":{"gitId":"yezkez10"},"content":" for (Task existingTask : taskList) {","lastModifiedDate":"2023-09-02"},{"lineNumber":214,"author":{"gitId":"yezkez10"},"content":" boolean wordIsRelevant \u003d existingTask.toString().contains(relevantWord);","lastModifiedDate":"2023-09-14"},{"lineNumber":215,"author":{"gitId":"yezkez10"},"content":" if (wordIsRelevant) {","lastModifiedDate":"2023-09-14"},{"lineNumber":216,"author":{"gitId":"yezkez10"},"content":" resultList.add(existingTask);","lastModifiedDate":"2023-09-13"},{"lineNumber":217,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":218,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":219,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":220,"author":{"gitId":"yezkez10"},"content":" TaskList resultTaskList \u003d new TaskList(resultList);","lastModifiedDate":"2023-09-13"},{"lineNumber":221,"author":{"gitId":"yezkez10"},"content":" output \u003d resultTaskList.printList();","lastModifiedDate":"2023-09-13"},{"lineNumber":222,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":223,"author":{"gitId":"yezkez10"},"content":" output \u003d \"There are no relevant tasks\";","lastModifiedDate":"2023-09-13"},{"lineNumber":224,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":225,"author":{"gitId":"yezkez10"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":226,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":227,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":228,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":229,"author":{"gitId":"yezkez10"},"content":" * Prints taskList.","lastModifiedDate":"2023-09-18"},{"lineNumber":230,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":231,"author":{"gitId":"yezkez10"},"content":" * @return The list in String form","lastModifiedDate":"2023-09-13"},{"lineNumber":232,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if the list is empty","lastModifiedDate":"2023-09-02"},{"lineNumber":233,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":234,"author":{"gitId":"yezkez10"},"content":" public String printList() throws DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":235,"author":{"gitId":"yezkez10"},"content":" String res \u003d \"Here are your tasks:\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":236,"author":{"gitId":"yezkez10"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":237,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You have no tasks in your list!\");","lastModifiedDate":"2023-09-13"},{"lineNumber":238,"author":{"gitId":"yezkez10"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":239,"author":{"gitId":"yezkez10"},"content":" for (int i \u003d 1; i \u003c\u003d taskList.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":240,"author":{"gitId":"yezkez10"},"content":" res +\u003d i + \".\" + taskList.get(i - 1) + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":241,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":242,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":243,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":244,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":245,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":245}},{"path":"src/main/java/duke/tools/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tools;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"public class Ui {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":" private static final String line \u003d \"___________________________________________\";","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" * Method that prints chatbot intro","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" public static String printIntro() {","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" String output \u003d line + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" output +\u003d \"Hey, I\u0027m ToDoIst! What\u0027s the move today?\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" output +\u003d line;","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" * Method to print outro.","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" public static String printOutro() {","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" String output \u003d line + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" output +\u003d \"Bye! CU again!\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" output +\u003d line;","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":26}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.gui.MainWindow\"\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":19}},{"path":"src/test/java/duke/test/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.test;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" public void testString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" Deadline testDeadline \u003d new Deadline(\"deadline return book /by Sunday\");","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" assertEquals(testDeadline.toString(), \"[D][ ] return book (by: Sunday)\");","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" public void testFormat() {","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" Deadline testDeadline \u003d new Deadline(\"deadline return book /by 2012-12-12\");","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" assertEquals(testDeadline.writtenFormat(), \"D | 0 | return book | Dec 12 2012\");","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" public void testMark() {","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" Deadline testDeadline \u003d new Deadline(\"deadline return book /by 2012-12-12\");","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" testDeadline.markDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" assertEquals(testDeadline.toString(), \"[D][X] return book (by: Dec 12 2012)\");","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":33}},{"path":"src/test/java/duke/test/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.test;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"public class EventTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" public void testString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" Event event \u003d new Event(\"event holiday /from Monday /to Tuesday\");","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" assertEquals(event.toString(), \"[E][ ] holiday (from: Monday to: Tuesday)\");","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" public void testDoubleMark() {","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" Event event \u003d new Event(\"event holiday /from Monday /to Tuesday\");","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" event.markDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" assertThrows(DukeException.class, () -\u003e event.markDone());","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":26}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"todo","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"deadline return book /by 28/8/22","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"deadline","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"event","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"mark","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"unmark","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"yezkez10":14}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"java -classpath ..\\bin duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yezkez10":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"# ToDoIst User Guide 📃","lastModifiedDate":"2023-09-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"TodoIst is a desktop app for managing your tasks. ","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"_Keep track of your tasks using ToDoIst!_","lastModifiedDate":"2023-09-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"## Features","lastModifiedDate":"2023-09-05"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"\u003e Notes:","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"\u003e * Words in \u003c \u003e are the parameters to be supplied by the user.","lastModifiedDate":"2023-09-18"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"\u003e * E.g. in todo \u003ctask\u003e, task is a parameter which can be used as todo eat","lastModifiedDate":"2023-09-18"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"\u003e * Commands are case-sensitive.","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"\u003e * e.g. todo quiz is acceptable, but TODO quiz and Todo quiz are unacceptable command formats.","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"\u003e * Some commands do not take in parameters (such as list, bye). As such, extraneous parameters for these commands are unsupported.","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"\u003e * e.g. list 123 is not an acceptable format.","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":"### Types of Tasks","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"1. **ToDos**: basic task with just a description","lastModifiedDate":"2023-09-18"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"1. **Deadlines**: tasks with a due date","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":"1. **Events**: task with a specific start and end time","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":"1. **Contact**: task with a person’s contact details","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":"## Usage","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"**Adding a ToDo** : ``todo \u003cdescription\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":"Adds a todo to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":"``todo call Nellie``","lastModifiedDate":"2023-09-18"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Todo to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":"T | 0 | call Nellie ","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":"**Adding an Event** : ``event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":"Adds an event to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"``event training /from Mon 6pm /to Mon 9pm``","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Event to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":"E | 0 | training | Mon 6pm to Mon 9pm ","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":"**Adding a Deadline** : ``deadline \u003cdescription\u003e /by \u003cdate\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":"Adds a deadline to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":"\u003e Note: It only supports \u003cdate\u003e inputs with the format YYYY-MM-DD (e.g. 2023-10-10).","lastModifiedDate":"2023-09-18"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":"``deadline return book /by 2023-10-10``","lastModifiedDate":"2023-09-18"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Deadline to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":"D | 0 | return book | Oct 10 2023","lastModifiedDate":"2023-09-18"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":"**Adding a Contact task** : ``contact \u003cname\u003e /@ \u003cmode of contact\u003e /for \u003creason\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":"Adds a task to contact an individual to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":"``contact Joy /@ foojnjoy@gmail.com /for follow-up checkup``","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Deadline to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":"C | 0 | Joy | foojnjoy@gmail.com | follow-up checkup","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":"**Listing all tasks** : ``list``","lastModifiedDate":"2023-09-18"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":90,"author":{"gitId":"yezkez10"},"content":"Shows a list of all tasks in the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":91,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":92,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":93,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":94,"author":{"gitId":"yezkez10"},"content":"``list``","lastModifiedDate":"2023-09-18"},{"lineNumber":95,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":96,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":97,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":99,"author":{"gitId":"yezkez10"},"content":"1. [T][] call Nellie","lastModifiedDate":"2023-09-18"},{"lineNumber":100,"author":{"gitId":"yezkez10"},"content":"2. [E][] training (from: Mon 6pm to: Mon 9pm)","lastModifiedDate":"2023-09-18"},{"lineNumber":101,"author":{"gitId":"yezkez10"},"content":"3. [D][] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":102,"author":{"gitId":"yezkez10"},"content":"4. [C][] Joy @ foojnjoy@gmail.com for follow-up checkup","lastModifiedDate":"2023-09-18"},{"lineNumber":103,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":104,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":105,"author":{"gitId":"yezkez10"},"content":"**Marking a task as done** : ``mark \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":106,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":107,"author":{"gitId":"yezkez10"},"content":"Marks the tasks at the specific index as ‘done’.","lastModifiedDate":"2023-09-18"},{"lineNumber":108,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":109,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Marking a \u0027done\u0027 task as \u0027done\u0027 is not allowed.","lastModifiedDate":"2023-09-18"},{"lineNumber":110,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":111,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":112,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":113,"author":{"gitId":"yezkez10"},"content":"``mark 3``","lastModifiedDate":"2023-09-18"},{"lineNumber":114,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":115,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":116,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":117,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":118,"author":{"gitId":"yezkez10"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-18"},{"lineNumber":119,"author":{"gitId":"yezkez10"},"content":"[D][X] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":120,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":121,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":122,"author":{"gitId":"yezkez10"},"content":"**Marking a task as undone** : ``unmark \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":123,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":124,"author":{"gitId":"yezkez10"},"content":"Marks the tasks at the specific index as ‘undone’.","lastModifiedDate":"2023-09-18"},{"lineNumber":125,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":126,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Marking an undone task as \u0027undone\u0027 is not allowed","lastModifiedDate":"2023-09-18"},{"lineNumber":127,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":128,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":129,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":130,"author":{"gitId":"yezkez10"},"content":"``unmark 3``","lastModifiedDate":"2023-09-18"},{"lineNumber":131,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":132,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":133,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":134,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":135,"author":{"gitId":"yezkez10"},"content":"Nice! I\u0027ve marked this task as undone:","lastModifiedDate":"2023-09-18"},{"lineNumber":136,"author":{"gitId":"yezkez10"},"content":"[D][] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":137,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":138,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":139,"author":{"gitId":"yezkez10"},"content":"**Deleting a task** : ``delete \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":140,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":141,"author":{"gitId":"yezkez10"},"content":"Deletes the tasks at the specified index.","lastModifiedDate":"2023-09-18"},{"lineNumber":142,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":143,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Deleting a task that doens\u0027t exist is not allowed. ","lastModifiedDate":"2023-09-18"},{"lineNumber":144,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":145,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":146,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":147,"author":{"gitId":"yezkez10"},"content":"``delete 1``","lastModifiedDate":"2023-09-18"},{"lineNumber":148,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":149,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":150,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":151,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":152,"author":{"gitId":"yezkez10"},"content":"Deleted the following task:","lastModifiedDate":"2023-09-18"},{"lineNumber":153,"author":{"gitId":"yezkez10"},"content":"[T][] call Nellie","lastModifiedDate":"2023-09-18"},{"lineNumber":154,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":155,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":156,"author":{"gitId":"yezkez10"},"content":"**Finding tasks by keyword** : ``find \u003ckeyword\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":157,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":158,"author":{"gitId":"yezkez10"},"content":"Finds tasks in the task list that match or contain the keyword.","lastModifiedDate":"2023-09-18"},{"lineNumber":159,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":160,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":161,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":162,"author":{"gitId":"yezkez10"},"content":"``find training``","lastModifiedDate":"2023-09-18"},{"lineNumber":163,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":164,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":165,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":166,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":167,"author":{"gitId":"yezkez10"},"content":"Here are the relevant tasks:","lastModifiedDate":"2023-09-18"},{"lineNumber":168,"author":{"gitId":"yezkez10"},"content":"1.[E][] training (from: Mon 6pm to: Mon 9pm)","lastModifiedDate":"2023-09-18"},{"lineNumber":169,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":170,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":171,"author":{"gitId":"yezkez10"},"content":"**Exiting the program**: ``bye``","lastModifiedDate":"2023-09-18"},{"lineNumber":172,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":173,"author":{"gitId":"yezkez10"},"content":"Exits the program.","lastModifiedDate":"2023-09-18"},{"lineNumber":174,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":175,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":176,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":177,"author":{"gitId":"yezkez10"},"content":"``bye``","lastModifiedDate":"2023-09-18"},{"lineNumber":178,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":179,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":180,"author":{"gitId":"yezkez10"},"content":" ","lastModifiedDate":"2023-09-18"},{"lineNumber":181,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":182,"author":{"gitId":"yezkez10"},"content":"Bye! CU again!","lastModifiedDate":"2023-09-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yezkez10":179,"-":4}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" id \u0027org.openjfx.javafxplugin\u0027 version \u00270.0.13\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"javafx {","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" version \u003d \"17.0.7\"","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" modules \u003d [ \u0027javafx.base\u0027, \u0027javafx.controls\u0027, \u0027javafx.fxml\u0027, \u0027javafx.graphics\u0027]","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" mainClass.set(\"duke.gui.Launcher\")","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" //mainClassName \u003d \"duke.Main\"","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" jvmArgs \u003d [\u0027--module-path\u0027, classpath.asPath,","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" \u0027--add-modules\u0027, \u0027javafx.controls,javafx.fxml\u0027]","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":"checkstyle {","lastModifiedDate":"2023-09-13"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2023-09-13"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":" sourceSets \u003d [] //ignoring checkstyle for now~","lastModifiedDate":"2023-09-13"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":32,"-":41}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"# ToDoIst User Guide","lastModifiedDate":"2023-09-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"TodoIst is a desktop app for managing your tasks. ","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"![Ui.png](Ui.png)","lastModifiedDate":"2023-09-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-20"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"_Keep track of your tasks using ToDoIst!_","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"\u003e Notes:","lastModifiedDate":"2023-09-18"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"\u003e * Words in \u003c \u003e are the parameters to be supplied by the user.","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"\u003e * E.g. in todo \u003ctask\u003e, task is a parameter which can be used as todo eat","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"\u003e * Commands are case-sensitive.","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"\u003e * e.g. todo quiz is acceptable, but TODO quiz and Todo quiz are unacceptable command formats.","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"\u003e * Some commands do not take in parameters (such as list, bye). As such, extraneous parameters for these commands are unsupported.","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":"\u003e * e.g. list 123 is not an acceptable format.","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"### Types of Tasks","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":"1. **ToDos**: basic task with just a description","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":"1. **Deadlines**: tasks with a due date","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":"1. **Events**: task with a specific start and end time","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":"1. **Contact**: task with a person’s contact details","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"-"},"content":"## Usage","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":"**Adding a ToDo** : ``todo \u003cdescription\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":"Adds a todo to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":"``todo call Nellie``","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Todo to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":"T | 0 | call Nellie ","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":"**Adding an Event** : ``event \u003cdescription\u003e /from \u003cstart\u003e /to \u003cend\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":"Adds an event to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":"``event training /from Mon 6pm /to Mon 9pm``","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Event to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":"E | 0 | training | Mon 6pm to Mon 9pm ","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":"**Adding a Deadline** : ``deadline \u003cdescription\u003e /by \u003cdate\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":"Adds a deadline to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":"\u003e Note: It only supports \u003cdate\u003e inputs with the format YYYY-MM-DD (e.g. 2023-10-10).","lastModifiedDate":"2023-09-18"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":"``deadline return book /by 2023-10-10``","lastModifiedDate":"2023-09-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Deadline to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":"D | 0 | return book | Oct 10 2023","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":"**Adding a Contact task** : ``contact \u003cname\u003e /@ \u003cmode of contact\u003e /for \u003creason\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":"Adds a task to contact an individual to the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":"``contact Joy /@ foojnjoy@gmail.com /for follow-up checkup``","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":"Okie! I\u0027ve added this Deadline to your task list! ","lastModifiedDate":"2023-09-18"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":"C | 0 | Joy | foojnjoy@gmail.com | follow-up checkup","lastModifiedDate":"2023-09-18"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":"Now you\u0027ve got 1 task in your list.","lastModifiedDate":"2023-09-18"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":90,"author":{"gitId":"yezkez10"},"content":"**Listing all tasks** : ``list``","lastModifiedDate":"2023-09-18"},{"lineNumber":91,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":92,"author":{"gitId":"yezkez10"},"content":"Shows a list of all tasks in the task list.","lastModifiedDate":"2023-09-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":94,"author":{"gitId":"-"},"content":"Example of usage:","lastModifiedDate":"2019-07-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":96,"author":{"gitId":"yezkez10"},"content":"``list``","lastModifiedDate":"2023-09-18"},{"lineNumber":97,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"yezkez10"},"content":"Expected output:","lastModifiedDate":"2023-09-18"},{"lineNumber":99,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":100,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":101,"author":{"gitId":"yezkez10"},"content":"1. [T][] call Nellie","lastModifiedDate":"2023-09-18"},{"lineNumber":102,"author":{"gitId":"yezkez10"},"content":"2. [E][] training (from: Mon 6pm to: Mon 9pm)","lastModifiedDate":"2023-09-18"},{"lineNumber":103,"author":{"gitId":"yezkez10"},"content":"3. [D][] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":104,"author":{"gitId":"yezkez10"},"content":"4. [C][] Joy @ foojnjoy@gmail.com for follow-up checkup","lastModifiedDate":"2023-09-18"},{"lineNumber":105,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":106,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":107,"author":{"gitId":"yezkez10"},"content":"**Marking a task as done** : ``mark \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":108,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":109,"author":{"gitId":"yezkez10"},"content":"Marks the tasks at the specific index as ‘done’.","lastModifiedDate":"2023-09-18"},{"lineNumber":110,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":111,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Marking a \u0027done\u0027 task as \u0027done\u0027 is not allowed.","lastModifiedDate":"2023-09-18"},{"lineNumber":112,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":113,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":114,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":115,"author":{"gitId":"yezkez10"},"content":"``mark 3``","lastModifiedDate":"2023-09-18"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":119,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":120,"author":{"gitId":"yezkez10"},"content":"Nice! I\u0027ve marked this task as done:","lastModifiedDate":"2023-09-18"},{"lineNumber":121,"author":{"gitId":"yezkez10"},"content":"[D][X] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":122,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":123,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":124,"author":{"gitId":"yezkez10"},"content":"**Marking a task as undone** : ``unmark \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":125,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":126,"author":{"gitId":"yezkez10"},"content":"Marks the tasks at the specific index as ‘undone’.","lastModifiedDate":"2023-09-18"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":128,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Marking an undone task as \u0027undone\u0027 is not allowed","lastModifiedDate":"2023-09-18"},{"lineNumber":129,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":130,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":131,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":132,"author":{"gitId":"yezkez10"},"content":"``unmark 3``","lastModifiedDate":"2023-09-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"Expected outcome:","lastModifiedDate":"2019-07-29"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":136,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":137,"author":{"gitId":"yezkez10"},"content":"Nice! I\u0027ve marked this task as undone:","lastModifiedDate":"2023-09-18"},{"lineNumber":138,"author":{"gitId":"yezkez10"},"content":"[D][] return book (by: Sunday)","lastModifiedDate":"2023-09-18"},{"lineNumber":139,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":140,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":141,"author":{"gitId":"yezkez10"},"content":"**Deleting a task** : ``delete \u003cindex\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":142,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":143,"author":{"gitId":"yezkez10"},"content":"Deletes the tasks at the specified index.","lastModifiedDate":"2023-09-18"},{"lineNumber":144,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":145,"author":{"gitId":"yezkez10"},"content":"\u003e Note: Deleting a task that doens\u0027t exist is not allowed. ","lastModifiedDate":"2023-09-18"},{"lineNumber":146,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":147,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":148,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":149,"author":{"gitId":"yezkez10"},"content":"``delete 1``","lastModifiedDate":"2023-09-18"},{"lineNumber":150,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":151,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":152,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":153,"author":{"gitId":"yezkez10"},"content":"``` ","lastModifiedDate":"2023-09-18"},{"lineNumber":154,"author":{"gitId":"yezkez10"},"content":"Deleted the following task:","lastModifiedDate":"2023-09-18"},{"lineNumber":155,"author":{"gitId":"yezkez10"},"content":"[T][] call Nellie","lastModifiedDate":"2023-09-18"},{"lineNumber":156,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":157,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":158,"author":{"gitId":"yezkez10"},"content":"**Finding tasks by keyword** : ``find \u003ckeyword\u003e``","lastModifiedDate":"2023-09-18"},{"lineNumber":159,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":160,"author":{"gitId":"yezkez10"},"content":"Finds tasks in the task list that match or contain the keyword.","lastModifiedDate":"2023-09-18"},{"lineNumber":161,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":162,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":163,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":164,"author":{"gitId":"yezkez10"},"content":"``find training``","lastModifiedDate":"2023-09-18"},{"lineNumber":165,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":166,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":167,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":168,"author":{"gitId":"yezkez10"},"content":"```","lastModifiedDate":"2023-09-18"},{"lineNumber":169,"author":{"gitId":"yezkez10"},"content":"Here are the relevant tasks:","lastModifiedDate":"2023-09-18"},{"lineNumber":170,"author":{"gitId":"yezkez10"},"content":"1.[E][] training (from: Mon 6pm to: Mon 9pm)","lastModifiedDate":"2023-09-18"},{"lineNumber":171,"author":{"gitId":"yezkez10"},"content":" ```","lastModifiedDate":"2023-09-18"},{"lineNumber":172,"author":{"gitId":"yezkez10"},"content":"---","lastModifiedDate":"2023-09-18"},{"lineNumber":173,"author":{"gitId":"yezkez10"},"content":"**Exiting the program**: ``bye``","lastModifiedDate":"2023-09-18"},{"lineNumber":174,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":175,"author":{"gitId":"yezkez10"},"content":"Exits the program.","lastModifiedDate":"2023-09-18"},{"lineNumber":176,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":177,"author":{"gitId":"yezkez10"},"content":"Example of usage:","lastModifiedDate":"2023-09-18"},{"lineNumber":178,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":179,"author":{"gitId":"yezkez10"},"content":"``bye``","lastModifiedDate":"2023-09-18"},{"lineNumber":180,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":181,"author":{"gitId":"yezkez10"},"content":"Expected outcome:","lastModifiedDate":"2023-09-18"},{"lineNumber":182,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2021-07-17"},{"lineNumber":183,"author":{"gitId":"-"},"content":"``` ","lastModifiedDate":"2021-07-17"},{"lineNumber":184,"author":{"gitId":"yezkez10"},"content":"Bye! CU again!","lastModifiedDate":"2023-09-18"},{"lineNumber":185,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-17"}],"authorContributionMap":{"yezkez10":157,"-":28}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.tools.KeywordEnum;","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import duke.tools.Ui;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import duke.tools.Storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import duke.tools.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" private Storage storage \u003d new Storage();","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" private TaskList taskList;","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" private Ui ui;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" public Duke() {","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" this.storage.read();","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" this.ui.printIntro();","lastModifiedDate":"2023-09-15"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" ArrayList\u003cTask\u003e tasks \u003d this.storage.getTaskList();","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" this.taskList \u003d new TaskList(tasks);","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" public String getResponse(String input) {","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" String output \u003d this.handleInput(input);","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" public String handleInput(String task) {","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" KeywordEnum keywordEnum \u003d KeywordEnum.assign(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" switch(keywordEnum) {","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" case LIST:","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" return this.taskList.printList();","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" case BYE:","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" this.storage.saveTasks(this.taskList.getTaskArray());","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" return this.ui.printOutro();","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" case TODO:","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" return this.taskList.handleTodo(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" case DEADLINE:","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" return this.taskList.handleDeadline(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" case EVENT:","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" return this.taskList.handleEvent(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" case CONTACT:","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" return this.taskList.handleContact(task);","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":" case DELETE:","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" return this.taskList.delete(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" case MARK:","lastModifiedDate":"2023-09-13"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" case UNMARK:","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" return this.taskList.mark(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":" return \"There aren\u0027t that many tasks. Please enter a valid index.\";","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException dukeException) {","lastModifiedDate":"2023-09-13"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":" return dukeException.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" case FIND:","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":" return this.taskList.find(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":" return e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":" case INVALID:","lastModifiedDate":"2023-09-14"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":" String invalidCaseOutput \u003d \"This is not a valid task.\";","lastModifiedDate":"2023-09-14"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":" return invalidCaseOutput;","lastModifiedDate":"2023-09-14"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":" default:","lastModifiedDate":"2023-09-13"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":" String defaultOutput \u003d null;","lastModifiedDate":"2023-09-14"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":" return defaultOutput;","lastModifiedDate":"2023-09-14"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yezkez10":77,"-":3}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke;","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.gui.MainWindow;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"public class Main extends Application {","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" public Main() {","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" @Override","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" public void start(Stage stage) {","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" stage.setScene(scene);","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" stage.show();","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":32}},{"path":"src/main/java/duke/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.exceptions;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":" public DukeException(String msg) {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":" super(msg);","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"yezkez10":7}},{"path":"src/main/java/duke/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.gui;","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import java.util.Collections;","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.Node;","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"/**","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" * containing text from the speaker.","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" private Label dialog;","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" private ImageView displayPicture;","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2023-09-13"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" fxmlLoader.load();","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" e.printStackTrace();","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" dialog.setText(text);","lastModifiedDate":"2023-09-13"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" private void flip() {","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2023-09-13"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" db.flip();","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" return db;","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":61}},{"path":"src/main/java/duke/gui/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.gui;","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"import javafx.application.Application;","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.Main;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"public class Launcher {","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":13}},{"path":"src/main/java/duke/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.gui;","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.Duke;","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.tools.Ui;","lastModifiedDate":"2023-09-15"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2023-09-15"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2023-09-15"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"import javafx.util.Duration;","lastModifiedDate":"2023-09-15"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"/**","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" * Controller for duke.gui.MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" private VBox dialogContainer;","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" private TextField userInput;","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" private Button sendButton;","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" private Duke duke;","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" public void initialize() {","lastModifiedDate":"2023-09-13"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2023-09-13"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" Label welcomeMessage \u003d new Label(Ui.printIntro());","lastModifiedDate":"2023-09-15"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-15"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" DialogBox.getDukeDialog(welcomeMessage.getText(), dukeImage));","lastModifiedDate":"2023-09-15"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2023-09-13"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" duke \u003d d;","lastModifiedDate":"2023-09-13"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" @FXML","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" private void handleUserInput() {","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2023-09-13"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2023-09-13"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2023-09-13"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2023-09-13"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" );","lastModifiedDate":"2023-09-13"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" userInput.clear();","lastModifiedDate":"2023-09-13"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" Label byeMessage \u003d new Label(Ui.printOutro());","lastModifiedDate":"2023-09-15"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" dialogContainer.getChildren().add(byeMessage);","lastModifiedDate":"2023-09-15"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":" PauseTransition pause \u003d new PauseTransition(Duration.seconds(5));","lastModifiedDate":"2023-09-15"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":" pause.setOnFinished(event -\u003e {","lastModifiedDate":"2023-09-15"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":" javafx.application.Platform.exit();","lastModifiedDate":"2023-09-13"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":" });","lastModifiedDate":"2023-09-15"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" pause.play();","lastModifiedDate":"2023-09-15"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":69}},{"path":"src/main/java/duke/tasks/Contact.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-18"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"public class Contact extends Task {","lastModifiedDate":"2023-09-18"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" private final String[] descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" public Contact(String[] descriptionArray) {","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" super(descriptionArray[0]);","lastModifiedDate":"2023-09-18"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" this.descriptionArray \u003d descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" * Checks if the input is valid.","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" public void checkValidity() throws DukeException {","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" if (descriptionArray.length \u003c 3) {","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You are missing some contact details\");","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" * Reformats events to be ready to be written into tasks.txt.","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" * Should print in this format:","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" * C | 1 | contact \u003cname\u003e | \u003cnumber\u003e | \u003creason\u003e","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" * @return the reformatted event.","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" public String writtenFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" String[] task \u003d descriptionArray[0].split(\"contact \");","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" String contactName \u003d task[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" String contactNumber \u003d descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" String contactReason \u003d descriptionArray[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" return \"C | \" + super.status() + \" | \" + contactName + \" | \" + contactNumber + \" | \" + contactReason;","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" @Override","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" public String toString() {","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" String contactNumber \u003d \"@ \" + descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" String contactReason \u003d \"for \" + descriptionArray[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" return \"[C]\" + super.toString() + \" \" + contactNumber + \" \" + contactReason;","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-18"}],"authorContributionMap":{"yezkez10":44}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import java.time.DayOfWeek;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" private final String[] descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" public Deadline(String[] descriptionArray) {","lastModifiedDate":"2023-09-18"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" super(descriptionArray[0]);","lastModifiedDate":"2023-09-18"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" this.descriptionArray \u003d descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" * Checks that task contains deadline and that deadline is in specified format.","lastModifiedDate":"2023-09-14"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" * Goes on to reformat date.","lastModifiedDate":"2023-09-14"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" * @return reformatted deadline","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-14"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" public void checkValidity() throws DukeException {","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" assert descriptionArray !\u003d null : \"Missing deadline task!\";","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" if (descriptionArray.length \u003c 2) {","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You are missing details of the the deadline!\");","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" String date \u003d descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" LocalDate.parse(date);","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Make sure you\u0027ve either inputted a valid day or in yyyy-mm-dd format (e.g. 2019-10-15)\");","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" * Reformats date into specified format","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" * @return the date in format yyyy-mm-dd","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" public String reformattedDate() throws DukeException {","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" String date \u003d descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" LocalDate deadline \u003d LocalDate.parse(date);","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" res \u003d deadline.format(formatter);","lastModifiedDate":"2023-09-13"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Make sure you\u0027ve either inputted a valid day or in yyyy-mm-dd format (e.g. 2019-10-15)\");","lastModifiedDate":"2023-09-13"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" * Reformats deadlines to be ready to be written into tasks.txt.","lastModifiedDate":"2023-09-14"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" * @return the reformatted deadline.","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":" public String writtenFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-14"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":" String eventType \u003d \"deadline\";","lastModifiedDate":"2023-09-01"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" String eventDescription \u003d descriptionArray[0].substring(eventType.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" res \u003d \"D | \" + super.status() + \" | \" + eventDescription + \" | \" + reformattedDate();","lastModifiedDate":"2023-09-18"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":" * Converts task to string.","lastModifiedDate":"2023-09-14"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":" * @return formatted String version of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-14"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":" res \u003d \"[D]\" + super.toString() + \" (by: \" + reformattedDate() + \")\";","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-14"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"yezkez10":89}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" private final String[] descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" public Event(String[] descriptionArray) {","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" super(descriptionArray[0]);","lastModifiedDate":"2023-09-18"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" this.descriptionArray \u003d descriptionArray;","lastModifiedDate":"2023-09-18"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" * Checks if the input is valid.","lastModifiedDate":"2023-09-14"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" public void checkValidity() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" if (descriptionArray.length \u003c 3) {","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You are missing event details!\");","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" * Formats start and end time of event.","lastModifiedDate":"2023-09-14"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" * @param descriptionArray the task description in an array.","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" * @return reformatted String version of task.","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" public String reformatDetails(String[] descriptionArray) {","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" assert descriptionArray[1] !\u003d null : \"Start time cannot be null\";","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" assert descriptionArray[2] !\u003d null : \"End time cannot be null\";","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" String start \u003d descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" String end \u003d descriptionArray[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" return \" (from: \" + start + \" to: \" + end + \")\";","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":"// public String breakdown(String descr) {","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":"// String[] descrArr \u003d descr.split(\"/\");","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":"// String start \u003d descrArr[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":"// String[] parts \u003d start.split(\" \");","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":"// String from \u003d parts[0];","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"// String restOfFrom \u003d start.substring(from.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":"// assert restOfFrom.length() \u003e 0 : \"Invalid start time\";","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":"// String end \u003d descrArr[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":"// String[] parts2 \u003d end.split(\" \");","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":"// String to \u003d parts2[0];","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":"// String restOfTo \u003d end.substring(to.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"// assert restOfTo.length() \u003e 0 : \"Invalid end time\";","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":"// return \" (from: \" + restOfFrom + \" to: \" + restOfTo + \")\";","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":"// }","lastModifiedDate":"2023-09-18"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" * Reformats events to be ready to be written into tasks.txt","lastModifiedDate":"2023-09-18"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" * @return the reformatted event,","lastModifiedDate":"2023-09-18"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" * in the format E | 0 | birthday | mon 3pm | mon 5pm","lastModifiedDate":"2023-09-18"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":"// public String writtenFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":"// String[] descrArr \u003d descr.split(\"/\"); //you get 0: taskName, 1: start, 2: end","lastModifiedDate":"2023-09-18"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":"// String start \u003d descrArr[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":"// String[] parts \u003d start.split(\" \");","lastModifiedDate":"2023-09-18"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":"// String from \u003d parts[0];","lastModifiedDate":"2023-09-18"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":"// String restOfFrom \u003d start.substring(from.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":"// String end \u003d descrArr[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":"// String[] parts2 \u003d end.split(\" \");","lastModifiedDate":"2023-09-18"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"// String to \u003d parts2[0];","lastModifiedDate":"2023-09-18"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":"// String restOfTo \u003d end.substring(to.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":"// String eventType \u003d \"event\";","lastModifiedDate":"2023-09-18"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":"// String eventDescription \u003d descrArr[0].substring(eventType.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":"//","lastModifiedDate":"2023-09-18"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":"// return \"E | \" + super.status() + \" | \" + eventDescription + \" | \" + restOfFrom + \" to \" + restOfTo;","lastModifiedDate":"2023-09-18"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":"// }","lastModifiedDate":"2023-09-18"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":" public String writtenFormat() {","lastModifiedDate":"2023-09-18"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":" String eventType \u003d \"event\";","lastModifiedDate":"2023-09-01"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":" String eventDescription \u003d descriptionArray[0].substring(eventType.length()).trim();","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":" String start \u003d descriptionArray[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":" String end \u003d descriptionArray[2];","lastModifiedDate":"2023-09-18"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":" return \"E | \" + super.status() + \" | \" + eventDescription + \" | \" + start + \" to \" + end;","lastModifiedDate":"2023-09-18"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":90,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"yezkez10"},"content":" * Converts task to string.","lastModifiedDate":"2023-09-14"},{"lineNumber":92,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"yezkez10"},"content":" * @return formatted String version of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"yezkez10"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"yezkez10"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"yezkez10"},"content":" return \"[E]\" + super.toString() + reformatDetails(this.descriptionArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"yezkez10":99}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" private final String descr;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" public Task(String descr) {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" this.descr \u003d descr;","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" public void markDone() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" assert !isDone : \"Can\u0027t do a \u0027done\u0027 task!\";","lastModifiedDate":"2023-09-14"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" if (isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"This task is already marked done!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" public void markUndone() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" assert isDone : \"Can\u0027t mark an undone task as \u0027done\u0027\";","lastModifiedDate":"2023-09-14"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" if (!isDone) {","lastModifiedDate":"2023-09-01"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"This task is already marked undone!\");","lastModifiedDate":"2023-09-01"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" } else {","lastModifiedDate":"2023-09-01"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" public String status() {","lastModifiedDate":"2023-09-01"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" return (isDone ? \"1\" : \"0\");","lastModifiedDate":"2023-09-01"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" public String marking() {","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" * Converts task to string.","lastModifiedDate":"2023-09-14"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" * @return formatted String version of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" assert this.descr.split(\" \").length \u003e 1 : \"Invalid task description\";","lastModifiedDate":"2023-09-14"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" String keyword \u003d this.descr.split(\" \")[0];","lastModifiedDate":"2023-09-01"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" String taskDescription \u003d this.descr.substring(keyword.length()).trim();","lastModifiedDate":"2023-09-01"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" return \"[\" + marking() + \"] \" + taskDescription;","lastModifiedDate":"2023-09-01"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"yezkez10":52}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" private final String descr;","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" public ToDo(String descr) {","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" super(descr);","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" this.descr \u003d descr;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" * Checks that the task is a valid ToDo with a task description.","lastModifiedDate":"2023-09-14"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-14"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" public void checkValidity() throws DukeException {","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" String[] descrArr \u003d descr.split(\" \");","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" assert descrArr.length \u003e 2 : \"Missing todo details\";","lastModifiedDate":"2023-09-14"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" if (descrArr.length \u003c 2) {","lastModifiedDate":"2023-09-01"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You are missing todo details\");","lastModifiedDate":"2023-09-01"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" * Reformats todos to be ready to be written into tasks.txt.","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" * @return the reformatted todo.","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" public String writtenFormat() {","lastModifiedDate":"2023-09-01"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" String[] descrArr \u003d descr.split(\"todo \");","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" return \"T | \" + super.status() + \" | \" + descrArr[1];","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" * Converts task to string.","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" * @return formatted String version of the task","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"yezkez10":44}},{"path":"src/main/java/duke/tools/KeywordEnum.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tools;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"public enum KeywordEnum {","lastModifiedDate":"2023-09-01"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":" LIST, BYE, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID, FIND, CONTACT;","lastModifiedDate":"2023-09-18"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-01"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" public static KeywordEnum assign(String task) {","lastModifiedDate":"2023-09-01"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" if (task.startsWith(\"list\")) return KeywordEnum.LIST;","lastModifiedDate":"2023-09-01"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"bye\")) return KeywordEnum.BYE;","lastModifiedDate":"2023-09-01"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"mark\")) return KeywordEnum.MARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"unmark\")) return KeywordEnum.UNMARK;","lastModifiedDate":"2023-09-01"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"todo\")) return KeywordEnum.TODO;","lastModifiedDate":"2023-09-01"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"deadline\")) return KeywordEnum.DEADLINE;","lastModifiedDate":"2023-09-01"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"event\")) return KeywordEnum.EVENT;","lastModifiedDate":"2023-09-01"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"delete\")) return KeywordEnum.DELETE;","lastModifiedDate":"2023-09-01"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"find\")) return KeywordEnum.FIND;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" else if (task.startsWith(\"contact\")) return KeywordEnum.CONTACT;","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" else return KeywordEnum.INVALID;","lastModifiedDate":"2023-09-01"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-01"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-01"}],"authorContributionMap":{"yezkez10":19}},{"path":"src/main/java/duke/tools/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tools;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" * Parses the text in the .txt document.","lastModifiedDate":"2023-09-18"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" * It splits the text by \"|\",","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" * giving the task type, status, description and date/ time","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" * @param task The formatted String task","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" * @return the array of Strings","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" public String[] parseTask(String task) {","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task.split(\"\\\\|\");","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" return parts;","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" * Parses the Contact task.","lastModifiedDate":"2023-09-18"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" * It splits the text by /@ and /for.","lastModifiedDate":"2023-09-18"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" * @param task The input task","lastModifiedDate":"2023-09-18"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" * @return String array containing task description, mode of contact and reason for contacting.","lastModifiedDate":"2023-09-18"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" public String[] parseContact(String task) {","lastModifiedDate":"2023-09-18"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" assert task !\u003d null : \"The task to contact someone to be parsed cannot be null\";","lastModifiedDate":"2023-09-18"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task. split(\" /@ | /for \");","lastModifiedDate":"2023-09-18"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" return parts;","lastModifiedDate":"2023-09-18"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" * Parses the Deadline task.","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" * It splits the text by /by.","lastModifiedDate":"2023-09-18"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" * @param task The input task","lastModifiedDate":"2023-09-18"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" * @return String array containing task description and deadline.","lastModifiedDate":"2023-09-18"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" public String[] parseDeadline(String task) {","lastModifiedDate":"2023-09-18"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" assert task !\u003d null : \"The Deadline to be parsed cannot be null\";","lastModifiedDate":"2023-09-18"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task. split(\" /by \");","lastModifiedDate":"2023-09-18"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" return parts;","lastModifiedDate":"2023-09-18"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" * Parses the Event task.","lastModifiedDate":"2023-09-18"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" * It splits the text by /from and /to.","lastModifiedDate":"2023-09-18"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" * @param task The input task","lastModifiedDate":"2023-09-18"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" * @return String array containing task description, start and end time.","lastModifiedDate":"2023-09-18"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":" public String[] parseEvent(String task) {","lastModifiedDate":"2023-09-18"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" assert task !\u003d null : \"The Event to be parsed cannot be null\";","lastModifiedDate":"2023-09-18"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task. split(\" /from | /to \");","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" return parts;","lastModifiedDate":"2023-09-18"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":57}},{"path":"src/main/java/duke/tools/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tools;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.*;","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import java.io.File;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" private static String DIR_PATH \u003d \"./data\";","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" private static String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" private static File savedFile \u003d new File(FILE_PATH);","lastModifiedDate":"2023-09-26"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" return taskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" * Writes tasks from ArrayList data structure into .txt file.","lastModifiedDate":"2023-09-14"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" * @param taskList the data structure that contains task objects","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" public void saveTasks(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" String res \u003d null;","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" if (task instanceof ToDo) {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" res \u003d ((ToDo) task).writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" res \u003d ((Deadline) task).writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" res \u003d ((Event) task).writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" FileWriter writer \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2023-09-26"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" writer.write(res);","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" System.out.println((\"Nothing in task list to write to tasks.txt\"));","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-13"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":" protected void checkSavedFiled() {","lastModifiedDate":"2023-09-26"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" File directory \u003d new File(DIR_PATH);","lastModifiedDate":"2023-09-26"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-09-26"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" System.out.println(\"Creating the directory to save your tasks\");","lastModifiedDate":"2023-09-26"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" directory.mkdir();","lastModifiedDate":"2023-09-26"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" if (!savedFile.exists()) {","lastModifiedDate":"2023-09-26"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" System.out.println(\"Creating the file to save your tasks\");","lastModifiedDate":"2023-09-26"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-26"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" savedFile.createNewFile();","lastModifiedDate":"2023-09-26"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" savedFile.setReadable(true);","lastModifiedDate":"2023-09-26"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":" savedFile.setWritable(true);","lastModifiedDate":"2023-09-26"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-26"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":" System.out.println(\"Couldn\u0027t create duke.txt under the ./data directory\");","lastModifiedDate":"2023-09-26"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-26"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-26"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":" * Reads tasks from .txt file to ArrayList data structure.","lastModifiedDate":"2023-09-14"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":" public void read() {","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":" checkSavedFiled();","lastModifiedDate":"2023-09-26"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":" Scanner sc \u003d new Scanner(savedFile);","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":" String task \u003d sc.nextLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":" String[] taskArr \u003d this.parser.parseTask(task);","lastModifiedDate":"2023-09-13"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":" String type \u003d taskArr[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":" String status \u003d taskArr[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":" String description \u003d taskArr[2];","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":" Task newTask;","lastModifiedDate":"2023-09-15"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":" switch (type) {","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":" case \"T\":","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":" newTask \u003d new ToDo(description);","lastModifiedDate":"2023-09-15"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":" case \"D\":","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":" String[] deadlineArray \u003d new String[] {description, taskArr[3]};","lastModifiedDate":"2023-09-18"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":" newTask \u003d new Deadline(deadlineArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":90,"author":{"gitId":"yezkez10"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"yezkez10"},"content":" case \"E\":","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"yezkez10"},"content":" String[] eventArray \u003d new String[] {description, taskArr[3], taskArr[4]};","lastModifiedDate":"2023-09-18"},{"lineNumber":93,"author":{"gitId":"yezkez10"},"content":" newTask \u003d new Event(eventArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":94,"author":{"gitId":"yezkez10"},"content":" break;","lastModifiedDate":"2023-09-18"},{"lineNumber":95,"author":{"gitId":"yezkez10"},"content":" case \"C\":","lastModifiedDate":"2023-09-18"},{"lineNumber":96,"author":{"gitId":"yezkez10"},"content":" String[] contactArray \u003d new String[] {description, taskArr[3], taskArr[4]};","lastModifiedDate":"2023-09-18"},{"lineNumber":97,"author":{"gitId":"yezkez10"},"content":" newTask \u003d new Contact(contactArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"yezkez10"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"yezkez10"},"content":" default:","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You have no tasks yet today!\");","lastModifiedDate":"2023-09-13"},{"lineNumber":101,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"yezkez10"},"content":" if (status.equals(\"1\")) {","lastModifiedDate":"2023-09-15"},{"lineNumber":103,"author":{"gitId":"yezkez10"},"content":" newTask.markDone();","lastModifiedDate":"2023-09-15"},{"lineNumber":104,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-15"},{"lineNumber":105,"author":{"gitId":"yezkez10"},"content":" taskList.add(newTask);","lastModifiedDate":"2023-09-15"},{"lineNumber":106,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"yezkez10"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"yezkez10"},"content":" } catch (FileNotFoundException exception) {","lastModifiedDate":"2023-09-26"},{"lineNumber":110,"author":{"gitId":"yezkez10"},"content":" System.out.println(\"There seems to be no saved duke.txt\");","lastModifiedDate":"2023-09-26"},{"lineNumber":111,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":113,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":113}},{"path":"src/main/java/duke/tools/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tools;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Contact;","lastModifiedDate":"2023-09-18"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" private static ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-18"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" * Method to return the taskList.","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-13"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" * @return taskList the task list.","lastModifiedDate":"2023-09-13"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-13"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" public ArrayList\u003cTask\u003e getTaskArray() {","lastModifiedDate":"2023-09-13"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" return taskList;","lastModifiedDate":"2023-09-13"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-13"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" * Handles TODOs.","lastModifiedDate":"2023-09-18"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":" * @param descr the task description","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":" * @return the String that is printed when a ToDo is created.","lastModifiedDate":"2023-09-14"},{"lineNumber":36,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"yezkez10"},"content":" public String handleTodo(String descr) {","lastModifiedDate":"2023-09-13"},{"lineNumber":38,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-15"},{"lineNumber":39,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"yezkez10"},"content":" ToDo newTodo \u003d new ToDo(descr);","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"yezkez10"},"content":" newTodo.checkValidity();","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"yezkez10"},"content":" taskList.add(newTodo);","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Okie! I\u0027ve added this ToDo to your task list!\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":44,"author":{"gitId":"yezkez10"},"content":" res +\u003d newTodo.writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":45,"author":{"gitId":"yezkez10"},"content":" res +\u003d \"Now you\u0027ve got \" + taskList.size() + \" tasks in your list.\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":46,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":48,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":50,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"yezkez10"},"content":" * Handles Events.","lastModifiedDate":"2023-09-18"},{"lineNumber":54,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"yezkez10"},"content":" * @param descr the task description","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"yezkez10"},"content":" * @return the String that is printed when a new Event is added.","lastModifiedDate":"2023-09-14"},{"lineNumber":57,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"yezkez10"},"content":" public String handleEvent(String descr) {","lastModifiedDate":"2023-09-13"},{"lineNumber":59,"author":{"gitId":"yezkez10"},"content":" String res \u003d null;","lastModifiedDate":"2023-09-13"},{"lineNumber":60,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"yezkez10"},"content":" String[] descriptionArray \u003d this.parser.parseEvent(descr);","lastModifiedDate":"2023-09-18"},{"lineNumber":62,"author":{"gitId":"yezkez10"},"content":" Event newEvent \u003d new Event(descriptionArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":63,"author":{"gitId":"yezkez10"},"content":" newEvent.checkValidity();","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"yezkez10"},"content":" taskList.add(newEvent);","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Okie! I\u0027ve added this Event to your task list!\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":66,"author":{"gitId":"yezkez10"},"content":" res +\u003d newEvent.writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":67,"author":{"gitId":"yezkez10"},"content":" res +\u003d \"Now you\u0027ve got \" + taskList.size() + \" tasks in your list.\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":68,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":70,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":72,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"yezkez10"},"content":" * Handles Deadlines.","lastModifiedDate":"2023-09-18"},{"lineNumber":76,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"yezkez10"},"content":" * @param descr the task description","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"yezkez10"},"content":" * @return the String that is printed when a new Deadline is added.","lastModifiedDate":"2023-09-14"},{"lineNumber":79,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"yezkez10"},"content":" public String handleDeadline(String descr) {","lastModifiedDate":"2023-09-13"},{"lineNumber":81,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-13"},{"lineNumber":82,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"yezkez10"},"content":" String[] descriptionArray \u003d this.parser.parseDeadline(descr);","lastModifiedDate":"2023-09-18"},{"lineNumber":84,"author":{"gitId":"yezkez10"},"content":" Deadline newDeadline \u003d new Deadline(descriptionArray);","lastModifiedDate":"2023-09-18"},{"lineNumber":85,"author":{"gitId":"yezkez10"},"content":" newDeadline.checkValidity();","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"yezkez10"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Okie! I\u0027ve added this Deadline to your task list!\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":88,"author":{"gitId":"yezkez10"},"content":" res +\u003d newDeadline.writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":89,"author":{"gitId":"yezkez10"},"content":" res +\u003d \"Now you\u0027ve got \" + taskList.size() + \" tasks in your list.\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":90,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":92,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":94,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-18"},{"lineNumber":97,"author":{"gitId":"yezkez10"},"content":" * Handles Contact tasks.","lastModifiedDate":"2023-09-18"},{"lineNumber":98,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-18"},{"lineNumber":99,"author":{"gitId":"yezkez10"},"content":" * @param descr the task description","lastModifiedDate":"2023-09-18"},{"lineNumber":100,"author":{"gitId":"yezkez10"},"content":" * @return the String that is printed when a new Contact task is added.","lastModifiedDate":"2023-09-18"},{"lineNumber":101,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-18"},{"lineNumber":102,"author":{"gitId":"yezkez10"},"content":" public String handleContact(String descr) {","lastModifiedDate":"2023-09-18"},{"lineNumber":103,"author":{"gitId":"yezkez10"},"content":" String output;","lastModifiedDate":"2023-09-18"},{"lineNumber":104,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-18"},{"lineNumber":105,"author":{"gitId":"yezkez10"},"content":" String[] task \u003d this.parser.parseContact(descr);","lastModifiedDate":"2023-09-18"},{"lineNumber":106,"author":{"gitId":"yezkez10"},"content":" Contact newContactTask \u003d new Contact(task);","lastModifiedDate":"2023-09-18"},{"lineNumber":107,"author":{"gitId":"yezkez10"},"content":" newContactTask.checkValidity();","lastModifiedDate":"2023-09-18"},{"lineNumber":108,"author":{"gitId":"yezkez10"},"content":" taskList.add(newContactTask);","lastModifiedDate":"2023-09-18"},{"lineNumber":109,"author":{"gitId":"yezkez10"},"content":" output \u003d \"Okie! I\u0027ve added this Contact task to your task list!\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":110,"author":{"gitId":"yezkez10"},"content":" output +\u003d newContactTask.writtenFormat() + \"\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":111,"author":{"gitId":"yezkez10"},"content":" output +\u003d \"Now you\u0027ve got \" + taskList.size() + \" tasks in your list.\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":112,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-18"},{"lineNumber":113,"author":{"gitId":"yezkez10"},"content":" output \u003d e.getMessage();","lastModifiedDate":"2023-09-18"},{"lineNumber":114,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":115,"author":{"gitId":"yezkez10"},"content":" return output;","lastModifiedDate":"2023-09-18"},{"lineNumber":116,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-18"},{"lineNumber":117,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-18"},{"lineNumber":118,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"yezkez10"},"content":" * Marks or unnmarks task.","lastModifiedDate":"2023-09-18"},{"lineNumber":120,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":121,"author":{"gitId":"yezkez10"},"content":" * @param task the task being marked","lastModifiedDate":"2023-09-02"},{"lineNumber":122,"author":{"gitId":"yezkez10"},"content":" * @return the String that is printed when a task is marked.","lastModifiedDate":"2023-09-14"},{"lineNumber":123,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-02"},{"lineNumber":124,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":125,"author":{"gitId":"yezkez10"},"content":" public String mark(String task) throws DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":126,"author":{"gitId":"yezkez10"},"content":" String res \u003d null;","lastModifiedDate":"2023-09-13"},{"lineNumber":127,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task.split(\" \");","lastModifiedDate":"2023-09-02"},{"lineNumber":128,"author":{"gitId":"yezkez10"},"content":" assert parts.length \u003e 2 : \"Missing indication of which task to mark as \u0027done\u0027\";","lastModifiedDate":"2023-09-14"},{"lineNumber":129,"author":{"gitId":"yezkez10"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-09-02"},{"lineNumber":130,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Which task do you want to mark as done?\");","lastModifiedDate":"2023-09-02"},{"lineNumber":131,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":132,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":133,"author":{"gitId":"yezkez10"},"content":" String index \u003d parts[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"yezkez10"},"content":" int taskIndex \u003d 0;","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"yezkez10"},"content":" taskIndex \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-09-02"},{"lineNumber":137,"author":{"gitId":"yezkez10"},"content":" boolean indexIsValid \u003d taskIndex \u003c taskList.size() || taskIndex \u003e 0;","lastModifiedDate":"2023-09-14"},{"lineNumber":138,"author":{"gitId":"yezkez10"},"content":" assert indexIsValid : \"Invalid index\";","lastModifiedDate":"2023-09-14"},{"lineNumber":139,"author":{"gitId":"yezkez10"},"content":" if (!indexIsValid) {","lastModifiedDate":"2023-09-14"},{"lineNumber":140,"author":{"gitId":"yezkez10"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2023-09-15"},{"lineNumber":141,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-14"},{"lineNumber":142,"author":{"gitId":"yezkez10"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":143,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Please enter a valid index.\";","lastModifiedDate":"2023-09-13"},{"lineNumber":144,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":145,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":146,"author":{"gitId":"yezkez10"},"content":" Task taskChanged \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-09-02"},{"lineNumber":147,"author":{"gitId":"yezkez10"},"content":" String action \u003d parts[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":148,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":149,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":150,"author":{"gitId":"yezkez10"},"content":" if (action.equals(\"mark\")) {","lastModifiedDate":"2023-09-02"},{"lineNumber":151,"author":{"gitId":"yezkez10"},"content":" taskChanged.markDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":152,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Nice! I\u0027ve marked this task as done:\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":153,"author":{"gitId":"yezkez10"},"content":" } else if (action.equals(\"unmark\")) {","lastModifiedDate":"2023-09-13"},{"lineNumber":154,"author":{"gitId":"yezkez10"},"content":" taskChanged.markUndone();","lastModifiedDate":"2023-09-02"},{"lineNumber":155,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Nice! I\u0027ve marked this task as undone:\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":156,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":157,"author":{"gitId":"yezkez10"},"content":" res +\u003d taskChanged.toString() + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":158,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":159,"author":{"gitId":"yezkez10"},"content":" res \u003d e.getMessage();","lastModifiedDate":"2023-09-13"},{"lineNumber":160,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":161,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":162,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":163,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":164,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":165,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":166,"author":{"gitId":"yezkez10"},"content":" * Deletes task from taskList.","lastModifiedDate":"2023-09-14"},{"lineNumber":167,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":168,"author":{"gitId":"yezkez10"},"content":" * @param task The instructions containing index of task to be deleted.","lastModifiedDate":"2023-09-02"},{"lineNumber":169,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if input is invalid.","lastModifiedDate":"2023-09-02"},{"lineNumber":170,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":171,"author":{"gitId":"yezkez10"},"content":" public String delete(String task) throws DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":172,"author":{"gitId":"yezkez10"},"content":" String res;","lastModifiedDate":"2023-09-13"},{"lineNumber":173,"author":{"gitId":"yezkez10"},"content":" String[] segments \u003d task.split(\" \");","lastModifiedDate":"2023-09-02"},{"lineNumber":174,"author":{"gitId":"yezkez10"},"content":" if (segments.length \u003c 2) {","lastModifiedDate":"2023-09-02"},{"lineNumber":175,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Which task do you want to delete?\");","lastModifiedDate":"2023-09-02"},{"lineNumber":176,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":177,"author":{"gitId":"yezkez10"},"content":" String index \u003d segments[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":178,"author":{"gitId":"yezkez10"},"content":" int taskIndex;","lastModifiedDate":"2023-09-02"},{"lineNumber":179,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":180,"author":{"gitId":"yezkez10"},"content":" taskIndex \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-09-02"},{"lineNumber":181,"author":{"gitId":"yezkez10"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":182,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Please enter a valid index.\"); //e.g. delete hi","lastModifiedDate":"2023-09-02"},{"lineNumber":183,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":184,"author":{"gitId":"yezkez10"},"content":" boolean indexIsValid \u003d taskIndex \u003c taskList.size() || taskIndex \u003e 0;","lastModifiedDate":"2023-09-14"},{"lineNumber":185,"author":{"gitId":"yezkez10"},"content":" assert indexIsValid : \"Index is invalid\";","lastModifiedDate":"2023-09-14"},{"lineNumber":186,"author":{"gitId":"yezkez10"},"content":" if (!indexIsValid) {","lastModifiedDate":"2023-09-14"},{"lineNumber":187,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"Please enter a valid index.\");","lastModifiedDate":"2023-09-02"},{"lineNumber":188,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":189,"author":{"gitId":"yezkez10"},"content":" Task deletedTask \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-09-14"},{"lineNumber":190,"author":{"gitId":"yezkez10"},"content":" taskList.remove(deletedTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":191,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":192,"author":{"gitId":"yezkez10"},"content":" res \u003d \"Deleted the following task: \\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":193,"author":{"gitId":"yezkez10"},"content":" res +\u003d deletedTask.toString() + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":194,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":195,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":196,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":197,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":198,"author":{"gitId":"yezkez10"},"content":" * Finds relevant tasks.","lastModifiedDate":"2023-09-14"},{"lineNumber":199,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":200,"author":{"gitId":"yezkez10"},"content":" * @param task the input that specifies what to find.","lastModifiedDate":"2023-09-02"},{"lineNumber":201,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if the input is invalid.","lastModifiedDate":"2023-09-02"},{"lineNumber":202,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":203,"author":{"gitId":"yezkez10"},"content":" public String find(String task) throws DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":204,"author":{"gitId":"yezkez10"},"content":" String[] parts \u003d task.split(\"find \");","lastModifiedDate":"2023-09-02"},{"lineNumber":205,"author":{"gitId":"yezkez10"},"content":" if (parts.length \u003c 1) {","lastModifiedDate":"2023-09-02"},{"lineNumber":206,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"What do you want to find?\");","lastModifiedDate":"2023-09-02"},{"lineNumber":207,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":208,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":209,"author":{"gitId":"yezkez10"},"content":" String relevantWord \u003d parts[1].trim();","lastModifiedDate":"2023-09-02"},{"lineNumber":210,"author":{"gitId":"yezkez10"},"content":" ArrayList\u003cTask\u003e resultList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-09-13"},{"lineNumber":211,"author":{"gitId":"yezkez10"},"content":" String output;","lastModifiedDate":"2023-09-13"},{"lineNumber":212,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":213,"author":{"gitId":"yezkez10"},"content":" for (Task existingTask : taskList) {","lastModifiedDate":"2023-09-02"},{"lineNumber":214,"author":{"gitId":"yezkez10"},"content":" boolean wordIsRelevant \u003d existingTask.toString().contains(relevantWord);","lastModifiedDate":"2023-09-14"},{"lineNumber":215,"author":{"gitId":"yezkez10"},"content":" if (wordIsRelevant) {","lastModifiedDate":"2023-09-14"},{"lineNumber":216,"author":{"gitId":"yezkez10"},"content":" resultList.add(existingTask);","lastModifiedDate":"2023-09-13"},{"lineNumber":217,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":218,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":219,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":220,"author":{"gitId":"yezkez10"},"content":" TaskList resultTaskList \u003d new TaskList(resultList);","lastModifiedDate":"2023-09-13"},{"lineNumber":221,"author":{"gitId":"yezkez10"},"content":" output \u003d resultTaskList.printList();","lastModifiedDate":"2023-09-13"},{"lineNumber":222,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":223,"author":{"gitId":"yezkez10"},"content":" output \u003d \"There are no relevant tasks\";","lastModifiedDate":"2023-09-13"},{"lineNumber":224,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":225,"author":{"gitId":"yezkez10"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":226,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":227,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":228,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":229,"author":{"gitId":"yezkez10"},"content":" * Prints taskList.","lastModifiedDate":"2023-09-18"},{"lineNumber":230,"author":{"gitId":"yezkez10"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":231,"author":{"gitId":"yezkez10"},"content":" * @return The list in String form","lastModifiedDate":"2023-09-13"},{"lineNumber":232,"author":{"gitId":"yezkez10"},"content":" * @throws DukeException if the list is empty","lastModifiedDate":"2023-09-02"},{"lineNumber":233,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":234,"author":{"gitId":"yezkez10"},"content":" public String printList() throws DukeException {","lastModifiedDate":"2023-09-13"},{"lineNumber":235,"author":{"gitId":"yezkez10"},"content":" String res \u003d \"Here are your tasks:\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":236,"author":{"gitId":"yezkez10"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":237,"author":{"gitId":"yezkez10"},"content":" throw new DukeException(\"You have no tasks in your list!\");","lastModifiedDate":"2023-09-13"},{"lineNumber":238,"author":{"gitId":"yezkez10"},"content":" } else {","lastModifiedDate":"2023-09-02"},{"lineNumber":239,"author":{"gitId":"yezkez10"},"content":" for (int i \u003d 1; i \u003c\u003d taskList.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":240,"author":{"gitId":"yezkez10"},"content":" res +\u003d i + \".\" + taskList.get(i - 1) + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":241,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":242,"author":{"gitId":"yezkez10"},"content":" return res;","lastModifiedDate":"2023-09-13"},{"lineNumber":243,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":244,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":245,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":245}},{"path":"src/main/java/duke/tools/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.tools;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"public class Ui {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":" private static final String line \u003d \"___________________________________________\";","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":" * Method that prints chatbot intro","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" public static String printIntro() {","lastModifiedDate":"2023-09-15"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" String output \u003d line + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" output +\u003d \"Hey, I\u0027m ToDoIst! What\u0027s the move today?\\n\";","lastModifiedDate":"2023-09-18"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" output +\u003d line;","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" /**","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" * Method to print outro.","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" public static String printOutro() {","lastModifiedDate":"2023-09-13"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" String output \u003d line + \"\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" output +\u003d \"Bye! CU again!\\n\";","lastModifiedDate":"2023-09-13"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" output +\u003d line;","lastModifiedDate":"2023-09-13"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" return output;","lastModifiedDate":"2023-09-13"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":26}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" \u003cpadding\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" \u003c/padding\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-13"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.gui.MainWindow\"\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":" \u003cchildren\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" \u003ccontent\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" \u003c/content\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" \u003c/children\u003e","lastModifiedDate":"2023-09-13"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2023-09-13"}],"authorContributionMap":{"yezkez10":19}},{"path":"src/test/java/duke/test/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.test;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import duke.tools.Parser;","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"public class DeadlineTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-26"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" public void testString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" Deadline testDeadline \u003d new Deadline(this.parser.parseDeadline(\"deadline return book /by Sunday\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" assertEquals(testDeadline.toString(), \"Make sure you\u0027ve either inputted a valid day or in yyyy-mm-dd format (e.g. 2019-10-15)\");","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" public void testFormat() {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" Deadline testDeadline \u003d new Deadline(this.parser.parseDeadline(\"deadline return book /by 2012-12-12\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" assertEquals(testDeadline.writtenFormat(), \"D | 0 | return book | Dec 12 2012\");","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" public void testMark() {","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" Deadline testDeadline \u003d new Deadline(this.parser.parseDeadline(\"deadline return book /by 2012-12-12\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":" testDeadline.markDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"yezkez10"},"content":" assertEquals(testDeadline.toString(), \"[D][X] return book (by: Dec 12 2012)\");","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"yezkez10"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":35}},{"path":"src/test/java/duke/test/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"package duke.test;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"import duke.tasks.Event;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"import duke.exceptions.DukeException;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"import duke.tools.Parser;","lastModifiedDate":"2023-09-26"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"public class EventTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-26"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":" public void testString() {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"yezkez10"},"content":" Event event \u003d new Event(this.parser.parseEvent(\"event holiday /from Monday /to Tuesday\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":16,"author":{"gitId":"yezkez10"},"content":" assertEquals(event.toString(), \"[E][ ] holiday (from: Monday to: Tuesday)\");","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"yezkez10"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"yezkez10"},"content":" public void testDoubleMark() {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"yezkez10"},"content":" Event event \u003d new Event(this.parser.parseEvent(\"event holiday /from Monday /to Tuesday\"));","lastModifiedDate":"2023-09-26"},{"lineNumber":22,"author":{"gitId":"yezkez10"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"yezkez10"},"content":" event.markDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"yezkez10"},"content":" assertThrows(AssertionError.class, () -\u003e event.markDone());","lastModifiedDate":"2023-09-26"},{"lineNumber":25,"author":{"gitId":"yezkez10"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"yezkez10"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"yezkez10"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"yezkez10":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yezkez10"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"yezkez10"},"content":"todo","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"yezkez10"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"yezkez10"},"content":"deadline return book /by 28/8/22","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"yezkez10"},"content":"deadline","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"yezkez10"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"yezkez10"},"content":"event project meeting /from Mon 2pm","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"yezkez10"},"content":"event","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"yezkez10"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"yezkez10"},"content":"mark","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"yezkez10"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"yezkez10"},"content":"unmark","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"yezkez10"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"yezkez10"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"yezkez10":14}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"yezkez10"},"content":"java -classpath ..\\bin duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yezkez10":1,"-":20}}] diff --git a/yezkez10_ip_master/commits.json b/yezkez10_ip_master/commits.json index 17792405..4f1e0c4c 100644 --- a/yezkez10_ip_master/commits.json +++ b/yezkez10_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yezkez10":[{"date":"2023-08-22","commitResults":[{"hash":"4941f389466ca8126913a95a4027b5c52e29a4f9","isMergeCommit":false,"messageTitle":"Level-0 to 2 cos i forgot.. tehe","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":6}}}]},{"date":"2023-08-23","commitResults":[{"hash":"7d2547ab3dfcc039044ba383e6595ff9c08c07f0","isMergeCommit":false,"messageTitle":"Debug level-3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":8}}},{"hash":"a70d23f2299849c24ff01304402e9ab78687c87c","isMergeCommit":false,"messageTitle":"Do Level-3. why did it take me 5 hours?? But finally clutched it","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"35b10c0cbdbcb792c5b88314fa2bf4e26ec56e9b","isMergeCommit":false,"messageTitle":"Do level-4. Abstraction heart shape heart shape","messageBody":"","tags":["Level-5","Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":15}}},{"hash":"43500b698fa77818f04309fcdbed7ef3c4213f9b","isMergeCommit":false,"messageTitle":"Do Level-5","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":66,"deletions":45}}},{"hash":"faa913adb6c62cf92be9e595dba71f7a39c2fae8","isMergeCommit":false,"messageTitle":"Complete Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}}]},{"date":"2023-08-25","commitResults":[{"hash":"c892a00ea82fa1508a93fe875f5128e93b33782a","isMergeCommit":false,"messageTitle":"Testing","messageBody":"","tags":["Testing"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":13,"deletions":4}}}]},{"date":"2023-08-28","commitResults":[{"hash":"fa4bb64b90d023ba2c6f2b88fee833a6f78a621d","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":0}}},{"hash":"6c43ac397d2c8b896a5b885c06047642ec2ed6bb","isMergeCommit":false,"messageTitle":"Edit Deadline to deal with dates","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":90,"deletions":40}}}]},{"date":"2023-08-29","commitResults":[{"hash":"9ced4f9939e7182c2d8cd4b5a87793cb300e2865","isMergeCommit":false,"messageTitle":"Debug level-8. Still can\u0027t parse when no time involved.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":10}}}]},{"date":"2023-09-01","commitResults":[{"hash":"e204c82357fcbfc25f16cff73e0392f7d2be8aa5","isMergeCommit":false,"messageTitle":"Redo Level-4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":271,"deletions":244}}},{"hash":"da935255c9f14a1e65c7bf44ca28625283e1b7e2","isMergeCommit":false,"messageTitle":"Redo Level-6 Delete","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":3}}},{"hash":"2cc31a12f9ffca3f2223bae61332668032e1d7b8","isMergeCommit":false,"messageTitle":"Redo Level-7: Save","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}}]},{"date":"2023-09-02","commitResults":[{"hash":"6935ca71243ba3ca94cc8b2462831b403cade059","isMergeCommit":false,"messageTitle":"Redo Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":9}}},{"hash":"9d4753850955e0c025877003c5765e3c96893cfc","isMergeCommit":false,"messageTitle":"Add load task function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":5}}},{"hash":"d260572acb9062870ff1ad92712e2f5dd37757b4","isMergeCommit":false,"messageTitle":"Add handling of no-such-file case","messageBody":"","tags":["Level-7","A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":30,"deletions":6}}},{"hash":"2961bf1dbfe6e29de030337ea5f6d45b39344129","isMergeCommit":false,"messageTitle":"Add OOP","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":367,"deletions":306}}},{"hash":"7ed40db88008deaadd8044ee0908655e20305d85","isMergeCommit":false,"messageTitle":"Organise files into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":4}}},{"hash":"b90c625792f73c8ec7ae83c6703e8ec680f42536","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-JUnit","A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"05d1e61dd6db438bff16d0ff573cfc54423c2f42","isMergeCommit":false,"messageTitle":"Add non-trivial JUnit tests","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":101,"deletions":37},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"a13b020054c949a58408161a4b4f9a7329a6fad7","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":75,"deletions":6}}},{"hash":"7032b799c749f8f37895fb37ca5284aeab3f1b76","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}}]},{"date":"2023-09-05","commitResults":[{"hash":"81a64380bdb99838c5e56be5ef751b18e8c63dfe","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":26,"deletions":20}}}]},{"date":"2023-09-06","commitResults":[{"hash":"4d4862035b3c12d1aedac104ed35b9b0c57dafc5","isMergeCommit":false,"messageTitle":"edit build.gradle","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}}]},{"date":"2023-09-13","commitResults":[{"hash":"394e778b3d26bbcc21f3c03dd668210abbeb3dce","isMergeCommit":false,"messageTitle":"Add Level-10 GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":26,"deletions":0},"txt":{"insertions":0,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":413,"deletions":181}}},{"hash":"bcd7aa9443dd8a7c51a3bfb8e0ce129b8b203b7a","isMergeCommit":false,"messageTitle":"Add GUI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"5645431303bd571508ea52c072756f9d7a09790d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/yezkez10/ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-14","commitResults":[{"hash":"d9b5847dd85e7ee00e4e03a99f67146a9c07f262","isMergeCommit":false,"messageTitle":"Add assertions. Assertions define assumptions for runtime to verify.","messageBody":"Assertions used liberally for error handling.\n\nAssertions used to verify assumptions before runtime catches error from assumption.\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":16,"deletions":8}}},{"hash":"fad977f7e20375a9a6463edfd80afefed37c1210","isMergeCommit":true,"messageTitle":"Merge pull request #1 from yezkez10/branch-A-Assertions","messageBody":"Add assertions.","fileTypesAndContributionMap":{}},{"hash":"75a2b25a7f320ec0bd23fac9e7fb59c4661f4af0","isMergeCommit":false,"messageTitle":"Improve code quality.","messageBody":"Production code needs to be of high quality.\n\nMany methods have been refactored to return Strings,\nso JavaDoc has been updated to reflect these changes.\n\nTried to SLAP hard most importantly.\n","tags":["merge-A-CodeQuality","A-CodeQuality","A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":99}}}]},{"date":"2023-09-15","commitResults":[{"hash":"095fbf7673fcd27ad1ec785160ba833dcab578fc","isMergeCommit":false,"messageTitle":"MainWindow.java initialise and handleUserInput","messageBody":"initialise does not print welcome message, and handleUserInput immediately exits app once \u0027bye\u0027 is inputted\n\nPrinting a welcome message before handling inputs makes it more presentable,\nand waiting 5 secs before exiting the app makes the app feel closer to a complete production.\n\nOthers:\nShortened some methods in Duke.java to improve code quality.\n","tags":["Level-9","A-Jar","A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":33}}}]},{"date":"2023-09-18","commitResults":[{"hash":"3b99c8b8c918508a14726c7c1d82f30ae1538b6e","isMergeCommit":false,"messageTitle":"Refactor code Methods were not abstracted well, a lot of unnecessary lines of code that could be truncated. Added parsers to SLAP better, also separated date reformatting from date validity check. Done this way so that could SLAP better.","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":210,"deletions":73}}},{"hash":"d73cb81a9e82e686dc6e9ff0f4c4b9221abbb0df","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"For code to be more readable.\n\nDeleting dead code and adding javadoc improves code quality.\n","tags":["Use-GFMD"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":37}}},{"hash":"2fbe622082d33e5f225fb85254bab3fe45f34c53","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":167,"deletions":13}}},{"hash":"45a97bbbf064bc7237aad92cefb7d085beb76908","isMergeCommit":false,"messageTitle":"Finalise features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":36}}},{"hash":"3b5bb3c73471006b4867b3fb5f6b9edaa7250d28","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/yezkez10/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7c5f807dbbd214c9fdcc5f3d0a0a5e949fab25ad","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":11,"deletions":11}}},{"hash":"5288a26196c476e736ed9bd8a540de699e09d732","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":178,"deletions":25}}},{"hash":"485f17da61931c7a3e2c6129354cb5f06ccc0d4d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/yezkez10/ip","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-20","commitResults":[{"hash":"6fd3baf4d888a06c1adfc9dff99fba96aed161f8","isMergeCommit":false,"messageTitle":"Update README.md, add Ui.png","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"28c943c33ef12a961d3c7c63c864fddbebc03ede","isMergeCommit":false,"messageTitle":"Update README.md formatting","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"yezkez10":{"java":1095,"md":336,"fxml":35,"sh":0,"bat":1,"gradle":30,"txt":15}},"authorContributionVariance":{"yezkez10":70717.25},"authorDisplayNameMap":{"yezkez10":"CS2103T-W09-3 FOO .. JOY"}} +{"authorDailyContributionsMap":{"yezkez10":[{"date":"2023-08-22","commitResults":[{"hash":"4941f389466ca8126913a95a4027b5c52e29a4f9","isMergeCommit":false,"messageTitle":"Level-0 to 2 cos i forgot.. tehe","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":6}}}]},{"date":"2023-08-23","commitResults":[{"hash":"7d2547ab3dfcc039044ba383e6595ff9c08c07f0","isMergeCommit":false,"messageTitle":"Debug level-3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":8}}},{"hash":"a70d23f2299849c24ff01304402e9ab78687c87c","isMergeCommit":false,"messageTitle":"Do Level-3. why did it take me 5 hours?? But finally clutched it","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"35b10c0cbdbcb792c5b88314fa2bf4e26ec56e9b","isMergeCommit":false,"messageTitle":"Do level-4. Abstraction heart shape heart shape","messageBody":"","tags":["Level-5","Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":15}}},{"hash":"43500b698fa77818f04309fcdbed7ef3c4213f9b","isMergeCommit":false,"messageTitle":"Do Level-5","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":66,"deletions":45}}},{"hash":"faa913adb6c62cf92be9e595dba71f7a39c2fae8","isMergeCommit":false,"messageTitle":"Complete Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":2}}}]},{"date":"2023-08-25","commitResults":[{"hash":"c892a00ea82fa1508a93fe875f5128e93b33782a","isMergeCommit":false,"messageTitle":"Testing","messageBody":"","tags":["Testing"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":13,"deletions":4}}}]},{"date":"2023-08-28","commitResults":[{"hash":"fa4bb64b90d023ba2c6f2b88fee833a6f78a621d","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":0}}},{"hash":"6c43ac397d2c8b896a5b885c06047642ec2ed6bb","isMergeCommit":false,"messageTitle":"Edit Deadline to deal with dates","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":90,"deletions":40}}}]},{"date":"2023-08-29","commitResults":[{"hash":"9ced4f9939e7182c2d8cd4b5a87793cb300e2865","isMergeCommit":false,"messageTitle":"Debug level-8. Still can\u0027t parse when no time involved.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":10}}}]},{"date":"2023-09-01","commitResults":[{"hash":"e204c82357fcbfc25f16cff73e0392f7d2be8aa5","isMergeCommit":false,"messageTitle":"Redo Level-4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":271,"deletions":244}}},{"hash":"da935255c9f14a1e65c7bf44ca28625283e1b7e2","isMergeCommit":false,"messageTitle":"Redo Level-6 Delete","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":3}}},{"hash":"2cc31a12f9ffca3f2223bae61332668032e1d7b8","isMergeCommit":false,"messageTitle":"Redo Level-7: Save","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}}]},{"date":"2023-09-02","commitResults":[{"hash":"6935ca71243ba3ca94cc8b2462831b403cade059","isMergeCommit":false,"messageTitle":"Redo Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":9}}},{"hash":"9d4753850955e0c025877003c5765e3c96893cfc","isMergeCommit":false,"messageTitle":"Add load task function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":5}}},{"hash":"d260572acb9062870ff1ad92712e2f5dd37757b4","isMergeCommit":false,"messageTitle":"Add handling of no-such-file case","messageBody":"","tags":["Level-7","A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":30,"deletions":6}}},{"hash":"2961bf1dbfe6e29de030337ea5f6d45b39344129","isMergeCommit":false,"messageTitle":"Add OOP","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":367,"deletions":306}}},{"hash":"7ed40db88008deaadd8044ee0908655e20305d85","isMergeCommit":false,"messageTitle":"Organise files into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":4}}},{"hash":"b90c625792f73c8ec7ae83c6703e8ec680f42536","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-JUnit","A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"05d1e61dd6db438bff16d0ff573cfc54423c2f42","isMergeCommit":false,"messageTitle":"Add non-trivial JUnit tests","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":101,"deletions":37},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"a13b020054c949a58408161a4b4f9a7329a6fad7","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":75,"deletions":6}}},{"hash":"7032b799c749f8f37895fb37ca5284aeab3f1b76","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":5}}}]},{"date":"2023-09-05","commitResults":[{"hash":"81a64380bdb99838c5e56be5ef751b18e8c63dfe","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":26,"deletions":20}}}]},{"date":"2023-09-06","commitResults":[{"hash":"4d4862035b3c12d1aedac104ed35b9b0c57dafc5","isMergeCommit":false,"messageTitle":"edit build.gradle","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}}]},{"date":"2023-09-13","commitResults":[{"hash":"394e778b3d26bbcc21f3c03dd668210abbeb3dce","isMergeCommit":false,"messageTitle":"Add Level-10 GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":26,"deletions":0},"txt":{"insertions":0,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":413,"deletions":181}}},{"hash":"bcd7aa9443dd8a7c51a3bfb8e0ce129b8b203b7a","isMergeCommit":false,"messageTitle":"Add GUI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"5645431303bd571508ea52c072756f9d7a09790d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/yezkez10/ip","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-09-14","commitResults":[{"hash":"d9b5847dd85e7ee00e4e03a99f67146a9c07f262","isMergeCommit":false,"messageTitle":"Add assertions. Assertions define assumptions for runtime to verify.","messageBody":"Assertions used liberally for error handling.\n\nAssertions used to verify assumptions before runtime catches error from assumption.\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":16,"deletions":8}}},{"hash":"fad977f7e20375a9a6463edfd80afefed37c1210","isMergeCommit":true,"messageTitle":"Merge pull request #1 from yezkez10/branch-A-Assertions","messageBody":"Add assertions.","fileTypesAndContributionMap":{}},{"hash":"75a2b25a7f320ec0bd23fac9e7fb59c4661f4af0","isMergeCommit":false,"messageTitle":"Improve code quality.","messageBody":"Production code needs to be of high quality.\n\nMany methods have been refactored to return Strings,\nso JavaDoc has been updated to reflect these changes.\n\nTried to SLAP hard most importantly.\n","tags":["merge-A-CodeQuality","A-CodeQuality","A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":99}}}]},{"date":"2023-09-15","commitResults":[{"hash":"095fbf7673fcd27ad1ec785160ba833dcab578fc","isMergeCommit":false,"messageTitle":"MainWindow.java initialise and handleUserInput","messageBody":"initialise does not print welcome message, and handleUserInput immediately exits app once \u0027bye\u0027 is inputted\n\nPrinting a welcome message before handling inputs makes it more presentable,\nand waiting 5 secs before exiting the app makes the app feel closer to a complete production.\n\nOthers:\nShortened some methods in Duke.java to improve code quality.\n","tags":["Level-9","A-Jar","A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":33}}}]},{"date":"2023-09-18","commitResults":[{"hash":"3b99c8b8c918508a14726c7c1d82f30ae1538b6e","isMergeCommit":false,"messageTitle":"Refactor code Methods were not abstracted well, a lot of unnecessary lines of code that could be truncated. Added parsers to SLAP better, also separated date reformatting from date validity check. Done this way so that could SLAP better.","messageBody":"","tags":["BCD-Extension"],"fileTypesAndContributionMap":{"java":{"insertions":210,"deletions":73}}},{"hash":"d73cb81a9e82e686dc6e9ff0f4c4b9221abbb0df","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"For code to be more readable.\n\nDeleting dead code and adding javadoc improves code quality.\n","tags":["Use-GFMD"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":37}}},{"hash":"2fbe622082d33e5f225fb85254bab3fe45f34c53","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":167,"deletions":13}}},{"hash":"45a97bbbf064bc7237aad92cefb7d085beb76908","isMergeCommit":false,"messageTitle":"Finalise features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":36}}},{"hash":"3b5bb3c73471006b4867b3fb5f6b9edaa7250d28","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/yezkez10/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7c5f807dbbd214c9fdcc5f3d0a0a5e949fab25ad","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":11,"deletions":11}}},{"hash":"5288a26196c476e736ed9bd8a540de699e09d732","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":178,"deletions":25}}},{"hash":"485f17da61931c7a3e2c6129354cb5f06ccc0d4d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/yezkez10/ip","messageBody":"","tags":["A-UserGuide"],"fileTypesAndContributionMap":{}}]},{"date":"2023-09-20","commitResults":[{"hash":"6fd3baf4d888a06c1adfc9dff99fba96aed161f8","isMergeCommit":false,"messageTitle":"Update README.md, add Ui.png","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":1}}},{"hash":"28c943c33ef12a961d3c7c63c864fddbebc03ede","isMergeCommit":false,"messageTitle":"Update README.md formatting","messageBody":"","tags":["A-Release"],"fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":0}}}]},{"date":"2023-09-26","commitResults":[{"hash":"0fc555785c2c7fbe566d1be45efa5472f03abb0e","isMergeCommit":false,"messageTitle":"Fix issues with relative path. Update tests","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":3},"txt":{"insertions":0,"deletions":1},"java":{"insertions":38,"deletions":23}}}]}]},"authorFileTypeContributionMap":{"yezkez10":{"java":1110,"md":336,"fxml":35,"sh":0,"bat":1,"gradle":32,"txt":14}},"authorContributionVariance":{"yezkez10":61719.47},"authorDisplayNameMap":{"yezkez10":"CS2103T-W09-3 FOO .. JOY"}}